第1个回答 2013-09-13
p 是指针,(p+1) 是 指针地址 加 1 *sizeof(指针类型)
*(p+1) 是 [ 指针地址 加 1 *sizeof(指针类型)] 这个地址里存放的值。
例如:
int a[]={1,2,3,4,5};
int *p;
p=&a[0];
(p+1) 是 &a[1];
*(p+1) 是 a[1] 的值
*(p+1) + 1 是 a[1]+1
=============
用下面程序体会一下:
#include<stdio.h>
main(){
int a[5]={1,2,3,4,5};
int *p;
int x;
int b[5][2]={1,2,3,4,5,6,7,8,9,10};
p = &a[0];
x = *(p+1) + 1;
printf("xa=%d\n",x);
p= &b[0][0];
x = *(p+1)+1;
printf("xb=%d\n",x);
return 0;
}
结果:
xa=3
xb=3本回答被网友采纳
第4个回答 2013-09-13
从你的追问中我知道了p是一个数组指针的。那么 *p=a 的意思是:p指针指向二维数组的首地址,那么此时*p就是p指针所指地址的内容,即为a[0][0]。而二维数组在c语言(你这应该是C吧)中是按照以下方式分配内存的:a[0][0],a[0][1],a[1][0],a[1][1].所以(p+1)的意识是怕指向的地址的下一个地址,那么*(p+1)自然就是a[0][1]了。那么再+1的话,就是a[0][1]的值加1。不知还有何疑问