美文网首页
数组指针

数组指针

作者: 小帅灬血 | 来源:发表于2016-02-27 16:39 被阅读0次

没有内存就没有指针。
数组首元素的地址和数组地址是两个不同的概念
数组名代表数组首元素的地址,它是个常量。

//声明了一个数组类型(固定大小内存块的别名)
typedef int (MyArr5)[5];

//定义一个指向数组类型的指针变量
MyArr5 *arry;
int a1[5] = {1,2,3,4,5};

typedef的用法:
1.定义一种类型的别名,而不是简单的宏替换;
typedef char * PCHAR;

多维数组a[i][j] ==> ((a + i) + j)
(a+i)就相当于第i行
(a+i)相当取第i行第一个首元素的地址,因为是二维的数组,(a+i)+j,相当于第i行第j列的地址,(a+i)+j)就相当于给第i行第j列赋值。
二级指针中,a的步长就是一行的长度,即a+1就相当于从第一行指到了第二行。
char * a[] = {"aaa","bbbb","cccc"};
char b[2][3] = {0};
int i = sizeof(a);
int j = sizeof(a);
int k = sizeof(b);
int l = sizeof(
b);
int n = sizeof(b);
a代表着数组指针a,b代表着二维数组b,sizeof(a)求出的是整个a的大小。
sizeof(
a)则代表了数组指针a,sizeof(b)求出的是二维数组b的大小sizeof(
b)求出的是一行的大小,sizeof(**b)一个空间的大小。
char类型占一个字节,int类型占4个字节。

当数组作为函数参数的时候会退化为指针。

void f (int a[5]) ===>void f(int a[]) ====>void f(int *a)

void g(int a[2][3]) ====> void g(int a[][3]) ====>void g(int (*a)[3])

数组参数 等效的指针参数
一维数组 char a[30] 指针 char*
指针数组 char *a[3] 指针的指针char **a

指针数组:char *a[ ] 即是二级指针,相当于char *a ,即数组a[ ]中也全是指针。
数组指针:char (
a)[ ] 指向数组的指针,即相当于用一个数组指向一个二维数组的一行的所有元素。

相关文章

  • 混淆知识点

    1、指针数组&数组指针、常量指针&指针常量、函数指针&指针函数 数组指针&指针数组 数组指针的定义 int (*p...

  • C语言的数组指针与指针数组(One)

    一、数组指针与指针数组: 数组指针<——>本质是指针 指针数组<——>本质是数组上图: 二、数组指针: int ...

  • 函数指针

    概念: 指针函数, 函数指针, 指针数组, 数组指针, 指向数组的指针, 指向函数指针数组的指针。

  • 指针与数组和函数的几个关系

    指针数组、数组指针 指针数组。数组的元素类型是指针如:int* a[4] 数组指针。指向数组的指针变量如:int ...

  • C语言指针相关

    一、指针数组 和 数组指针的区别:1:指针数组,还是数组,数组每个元素是指针。2:数组指针,是指针,指向的是数组。...

  • C语言

    C 指针、指针变量、函数指针、指针函数、指针数组、数组指针、C 数组

  • 指针笔记

    指针数组和数组指针 数组指针是指向数组的指针,指针的值与数组首元素地址相同,但范围是整个数组,所以数组指针和数组名...

  • C语言21 指针数组与数组指针

    C语言21 指针数组与数组指针 指针数组的定义 指针数组的赋值 结构体指针数组 分析下面的代码 数组指针的定义 数...

  • JNI基础 -- C++基础知识(指针数组)

    数组和指针,数组指针,指针数组 数组 声明一个数组 这个比较简单,不做过多介绍 数组指针 数组指针是一个指针,指向...

  • 指针

    指针数组与数组指针 在这里数组指针是指向数组的指针,其本质为指针,指向的对象是数组。由于数组的形式多样所以数组指针...

网友评论

      本文标题:数组指针

      本文链接:https://www.haomeiwen.com/subject/bdjwkttx.html