1.数组的本质
就是一片连续的内存;
2.一些事实
-使用取地址操作符&获取数组的地址
-数组名可看作一个指针,代表数组中0元素的地址
-当指针指向数组元素时,可进行指针运算(指针移动)
eg:int a[] = {1, 2, 3, 4, 5};
int* p = a;//a<==>数组名<==>&a[0]
p = p + 1;//指针操作
printf("%p", p);//打印指针用%p
3.深入理解数组地址(int a[] = {1, 2, 3, 4, 5};)
-&a与a在数值上相同,但是意义上不同
-&a代表数组地址,类型为:int (*)[5];
-a代表数组0号元素地址,类型为:int*
-指向数组的指针:int*(pName)[5] = &a;
eg:int a[5] = {1, 2, 3, 4, 5};
int(*pa)[5] = &a;
int * p = a;
pa = p;//错误 类型不一致
注意:数组名并不是指针,只是代表了0号元素的地址,因此可以当作指针使用
4.指针与数组的等价用法
a[i] <==>*(a + i)//a+i即数组中第i个元素的地址
<==>*(p + i) <==>p[i]
5.字符串
C语言中,字符串常量时char*类型,一种指针类型
6.指针移动
int v = *p++;
--指针访问操作符(*)和自增运算符(++)优先级相同
--所以,先从p指向的内存中取值,然后p进行移动
--等价于:int v = *p;p++;
小结:数组名可看作一个指针,代表数组中0元素的地址
&a与a在数值上相同,但是意义上不同
C语言中字符串常量的类型时char*
当指针指向数组元素时,才能进行指针运算
标签:--,数组名,C语言,int,地址,数组,指针 From: https://www.cnblogs.com/ysnana/p/17113727.html