本文共 936 字,大约阅读时间需要 3 分钟。
数组
是直接访问数据的。指针
是间接访问数据的。数组
是类型相同、数目固定的若干个变量的有限集合,它存放的是数据。指针
是变量的地址,存放的是变量的地址。数组
通常存储在静态存储区或栈上。指针
可以随时随地地指向任意类型的内存块。sizeof
可以计算出数组的容量(字节数)。sizeof(p)
,p
为指针得到的是一个指针变量的字节数,而不是p多指的内存容量。数组长度 = sizeof(数组名)/sizeof(数组名[0])
char a[] = "hello"
数组指向每个数组元素。char *p = "world"
而p
指向字符串首地址指针。指针的指针
”,就是“指向指针变量的指针变量
”,或者称为“多重指针
”的应用。int num = 10; // 定义整数变量num,初值赋为10 int *ptr1 = # // 定义指针变量 *ptr1,并指向整数变量num的地址 int **ptr2 = &ptr1; // 定义指针变量ptr2,并指向指针变量ptr1 的地址
例如,二维数组,其在内存中也是以线性方式分配数组的可用空间,当然二维数组的名称同样也可以代表第一个数组元素的内存地址。
int arr[3][5];
*(arr+0)
表示数组中第一维维数0的第一个元素的内存地址,也就是arr[0][0]
,其他数组元素的内存地址依次类推。*(arr+1)
表示数组中第一维维数1的第一个元素的内存地址,也就是arr[1][0]
;arr[1][1]
的内存地址,应该是使用*(arr+1)+1
。*
运算符的优先级高于+
运算符。*
取值运算符,也就是*(*(arr+i)+j)
,就可以使用双重指针表示法来获取二维数组arr[i][j]
的元素值。转载地址:http://fkztn.baihongyu.com/