数组指针:就是一个指针,指向了一个数组地址,偏移的时候是偏移整个数组。
.
1.数组指针的定义及赋值:
int a[3] = {1,2,3};
int (*p)[3]; 定义
p = a; 或 p = &a[0] 赋值
2.与普通指针指向数组命名的区别
int a[3] = {1,2,3};
1.普通整型数指针指向数组
int *p; 此指针并非是数组指针,仅仅是一个普通的整型数指针,刚好指向了数组的首元素地址a &a[0]
p = a;
2.数组指针指向数组
int (*p2)[3];
p2 = a;
.
3.数组指针与普通指针指向数组的根本区别
(1)共同点:都是指向了相同的地址位置
(2)不同点:偏移值不同。以上面馆int a[3] 为例,普通整型数指针指向数组偏移的时候,遍历的时候只会偏移一个元素的位置,就是偏移了 4 个字节。如果是数组指针,则是偏移了整个数组的位置,则是偏移 12 个字节
.
4.偏移代码编写及结果如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[3] = {1,2,3};
int (*p)[3]; //数组指针
p = a;
int *p2; //普通指针
p2 = a;
printf("p 的地址是:%p\n",p);
printf("p2的地址是:%p\n",p2);
printf("++p 的地址是:%p\n",++p); //++p的意思是自身加1后再运算
printf("++p2的地址是:%p\n",++p2); //p++的意思是自身运算后再加1
system("pause");
return 0;
}