一道关于指针的问题
#include<stdio。h> void main() { int *p1,*p2,a[2]={0},m=12,n=23,*b,*c; //p1=&m;p2=&n; //p1=&a[0],p2=&a[1]; b=p1;c=p2; printf("%d %d\n%d\n",p1,p2,p2-p1); printf("%d %d\n%d\n",a,b,a-b); } //首先第一个问题,在1245036。 这个地址不已经有了一个值么?为什么还能储存p2的值?? //这个地址已经有了个值,但是*p2是指针,p2=&n=1245036,所以是*p2指向这个地址中的值,使用//指针...全部
#include<stdio。h> void main() { int *p1,*p2,a[2]={0},m=12,n=23,*b,*c; //p1=&m;p2=&n; //p1=&a[0],p2=&a[1]; b=p1;c=p2; printf("%d %d\n%d\n",p1,p2,p2-p1); printf("%d %d\n%d\n",a,b,a-b); } //首先第一个问题,在1245036。
这个地址不已经有了一个值么?为什么还能储存p2的值?? //这个地址已经有了个值,但是*p2是指针,p2=&n=1245036,所以是*p2指向这个地址中的值,使用//指针*p2就可以使用这个地址中的值//第二个问题,将p1=&m;p2=&n;换成斜杠后的语句。
竟然发现p1=p2。//是*p1指向a[0]的地址,*p2指向a[1]的地址,所以并不是p1=p2,而是p1=a=b,原因在于数组名代表数组//首元素的地址,b=p1。收起