|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include <stdio.h>
- #include <string.h>
- //************************指针数组与数组指针*************************
- //数组指针:指向的是数组地址,不是数组的第一个元素地址
- int main()
- {
-
- int temp[5] = {1,2,3,4,5};
- int (*p)[5] = &temp; //取数组的地址给数组指针
- int i;
- for (i = 0;i<5;i++)
- {
- printf("%d\n",*(*p + i));
- }
- return 0;
- }
复制代码
你运行下这个看看~应该就理解了吧
我添加的这几行打印地址,前四个打印出来的是同一个地址,但是意义不同
看后两个的地址就知道了
*p+1指向的是下一个int类型变量的地址,也就是temp[1]的地址,跳过的字节数是一个int类型变量的长度;
p+1指向的是下一个数组的地址,跳过的字节数是五个int类型变量的长度
所以说*p指向的是temp[0], p指向的是temp
- #include <stdio.h>
- #include <string.h>
- //************************指针数组与数组指针*************************
- //数组指针:指向的是数组地址,不是数组的第一个元素地址
- int main()
- {
-
- int temp[5] = {1,2,3,4,5};
- int (*p)[5] = &temp; //取数组的地址给数组指针
- int i;
- printf("temp 地址:%p\n",temp);
- printf("temp[0] 地址:%p\n",&temp[0]);
- printf("*p :%p\n",*p);
- printf(" p :%p\n",p);
- printf("*p+1:%p\n",*p+1);
- printf(" p+1:%p\n",p+1);
- for (i = 0;i<5;i++)
- {
- printf("%d\n",*(*p + i));
- }
- return 0;
- }
复制代码
|
|