main()
{ int a=123;
int *p1=123,*p2;
p2=&a;
printf("%d,%d",p1,*p2);
为什么输出的结果一样啊!p1不是表示地址吗?
那*p1=123,表示什么?
追答额 我不是写了等价于吗。
那个你是问*p1=123;吧,而不是问int *p1=123;的吧。
*p1=123;是指把p1里的那个地址上的数据改成了123,p1的值没有变得哦。
你说p1的地址是123,还是p1的值没变,那是多少啊?还有照你这么说 *p1=p1
追答同学啊 ,这要看具体问题的啊。我写个吧:
int a=5; //a=5 假定a的地址值为0x01 AF F7 CD
int *p1=123; //p1=123;a=5;
p1=&a; //p1=0x01 AF F7 CD ; a=5;
*p1=123; //p1=0x01 AF F7 CD ; a=123;
额 这下应该能稍微的明白一些了吧。
照你这么说 p1= p1*.
追答我觉得不能这么说,因为你只是把指针指向了一个地址,并没有为这个地址赋值,程序是没办法执行的。一般采用 int *p1 = &a;这种形式对指针变量进行指向。