指针取数组地址
int a = { 1,3,55,4,5,6,7,8,9,10 };int *p = a;
printf("%d\n", *p + 1);
printf("%d\n", *(p+1));
printf("%d\n", p + 1);
*p + 1和*(p+1)还有p+1本质区别是什么 p是数组第一个元素的地址
*p是数组第一个元素
所以,*p+1是第一个元素+1,也就是a+1
*(p+1),地址后移一个int长度,所以就是a
p+1就是地址值+1啦
Cute_Traver_Cat 发表于 2020-6-16 23:53
p是数组第一个元素的地址
*p是数组第一个元素
所以,*p+1是第一个元素+1,也就是a+1
p+1指向哪里呢? miniArce 发表于 2020-6-16 23:58
p+1指向哪里呢?
假如p的地址是 0x123 那么p+1就是0x124了 chxchxkkk 发表于 2020-6-17 00:30
假如p的地址是 0x123 那么p+1就是0x124了
p+1所指向的元素又是哪个呢? c or c++?{:10_247:}{:10_247:} chxchxkkk 发表于 2020-6-17 00:30
假如p的地址是 0x123 那么p+1就是0x124了
这样说不对,把一个指针+1就是指向数组的下一个地址(如一个int指针,原来是0x123,+1就是0x127了(int用四个字节存储)) 幸好看了一下你的代码。万幸,差点说错了。。
*取值。p为地址。
*p+1即,p地址中的值,加上1作为结果
*(p+1),p地址加上一个地址。即p的下一个地址,取它的值。
p+1就是地址的下一个地址。是按地址加的。该地址不是加一字节,而是加p类型的长度
假如p是整型地址,它的地址中的值占四个字节,那么,加1就是四个字节后的。这个1也代表了有四个字节 405794672 发表于 2020-6-17 11:02
幸好看了一下你的代码。万幸,差点说错了。。
*取值。p为地址。
*p+1即,p地址中的值,加上1作为结果
好的,谢谢
页:
[1]