C语言 k=&p main(){ int a[5]={2,4,5,6,10},*p,**k;p=a; k=&p; printf(“%d”,*(p++)); printf(“%d\n”,**k); }k=&p 就是说 k指向了指针p 对吧,但是p改变之后 并没有再一次的把p赋值给k啊?为什么k会是4呢?是不是说k指向

来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/19 19:07:40
C语言k=&pmain(){inta[5]={2,4,5,6,10},*p,**k;p=a;k=&p;printf(“%d”,*(p++));printf(“%d\n”,**k);}k=&p就是说k指

C语言 k=&p main(){ int a[5]={2,4,5,6,10},*p,**k;p=a; k=&p; printf(“%d”,*(p++)); printf(“%d\n”,**k); }k=&p 就是说 k指向了指针p 对吧,但是p改变之后 并没有再一次的把p赋值给k啊?为什么k会是4呢?是不是说k指向
C语言 k=&p
main()
{ int a[5]={2,4,5,6,10},*p,**k;
p=a; k=&p; printf(“%d”,*(p++)); printf(“%d\n”,**k); }
k=&p 就是说 k指向了指针p 对吧,但是p改变之后 并没有再一次的把p赋值给k啊?
为什么k会是4呢?
是不是说k指向的p这个指针,而p指向的内容变化了 顺着k指向的最终内容也变化了?

C语言 k=&p main(){ int a[5]={2,4,5,6,10},*p,**k;p=a; k=&p; printf(“%d”,*(p++)); printf(“%d\n”,**k); }k=&p 就是说 k指向了指针p 对吧,但是p改变之后 并没有再一次的把p赋值给k啊?为什么k会是4呢?是不是说k指向
首先p是一个变量,在*(p++)后p变量的值变化了,p变量的值指向数组中的a[1]即4,但是p的地址没有变,即k仍然指向p,所以k就可以通过p访问到a[1] = 4了.
也就是刚开始k----->p------>a[0],在执行*(p++)后变成k----->p------>a[1];
这种指针问题你搞不清楚时,你可以在本子上画画就会搞明白了.