指针小程序,可不可以给解释一下。。

如题所述

第1个回答  2014-12-22
例如

int a[5]={1,2,3,4,5};
int *p = a;

*p++ 先取指针p指向的值(数组第一个元素1),再将指针p自增1;

cout << *p++; // 结果为 1

cout <<(*p++); // 1

(*p)++ 先去指针p指向的值(数组第一个元素1),再将该值自增1(数组第一个元素变为2
cout << (*p)++; // 1
cout <<((*p)++) //2
*++p 先将指针p自增1(此时指向数组第二个元素),* 操作再取出该值

cout << *++p; // 2
cout <<(*++p) //2

++*p 先取指针p指向的值(数组第一个元素1),再将该值自增1(数组第一个元素变为2)
cout <<++*p; // 2
cout <<(++*p) //2

注意,上面的每条cout输出,要单独输出才能得到后面的结果追问

还没学c++。。

追答

全是C,没有C++的内容啊

本回答被网友采纳
第2个回答  2014-12-22
++*x相当于++a,a自增。
*(z++)是z地址+1 再取值
第3个回答  2014-12-22
我想知道那个z的值是多少?
第4个回答  2014-12-22
你要解释哪里?追问

指针的变化。。

追答

前两个指针没有变,指针指向的值变了,后一个指针变化了,但是只在prt函数有效,不会影响c的值。

追问

为什么输出20呢?,z++不指向20吧。。。

追答

*(z++)相当于输出*z,然后再z++

本回答被提问者采纳
相似回答
大家正在搜