请教高手

int a,k=2,m=2,*p1=&k,*p2=&m, 那么p1==&m的值是什么意思?其中的==怎么理解!还有,int a[2][3],(*p)[3]=a 要描述a[1][0]的地址为什么是*(p+1)!其中(*p)[3]=a是不是指针数组啊!怎么理解它的含义!!!帮个忙好心大哥!
2026年09月27日 10:39
有2个网友回答
网友(1):

1. p1==&m 意思是将m的地址与p1比较,==比较运算符,而=是赋值运算符,注意二者的区别
2. 首先要理解p是一个指针数组,后边的3表示p所指向的数组每一组有三个元素,于是就容易理解:*(p)为a[0][0]地址,*(p+1)为a[1][0]的地址咯(~_~)
记住一点:p指向的元素类型是数组,该数组有3个元素,所以p+1移动是一组元素,而不是一个元素!希望对您有所帮助!!

网友(2):

*取值,&取地址
*p1=&k 拆分看
int *p1;
p1 = &k; 这行意思就是p1=k变量的地址
p1==&m 用于if中 意思就是 p1 指向 变量m所在的的地址

int a[2][3],(*p)[3]=a 的意思就是定义一个指针数组p指向二维数组a的首地址
因为p指向的地址是a数组的首地址所以因为有int a[2][3],(*p)[3]=a
那么(p+1)的地址指向a[1]所在的地址,可以打印一下!