指针变量操作问题

来源:百度知道 编辑:UC知道 时间:2024/06/10 18:47:13
有四组对指针变量进行操作的于语句,以下判断是否正确?
(1)int *p , *q ; q = p;
int a , *p , *q ; p = q = &a ;
(2) int a , *p , *q ; q = &a; p = *q;
int a = 20 , *p; *p = a ;
(3) int a = b = 0 , *p ; p = &a; b = *p;
int a = 20, *p , *q = &a; *p = *q;
(4) int a = 20, *p , *q = &a; p = q;
int p, *q; q=&p;

每次都弄不清什么时候加* 什么时候要加& ?

最根本的,&得到地址,*得到地址内存的数据.
其次,在声明指针变量 和指针赋值是是有点不同的.比如(3)的int *q=&a 与p=&a,可以认为(并不是这样) int * 是个整体,是种"数据类型",即指向整形变量的指针变量,这样就不太容易混了.
最后,关于*p=*q多说两句,这句仅仅是改变了p说指向的数据改变里值,而不是p改变了.明白这点,将来再学用指针做函数参数就容易多了.

第(2)句的 p = *q错误;其它都对。定义一个指针就相当于定义一段内存,这个内存中存放着一个它指向的地址。在指针前面加一个*,表示该指针所指的地址存放的数的值。这时它就相当于一个普通变量了。而在普通变量前加一个&(取地址符),表示该变量的内存地址。