关于指针问题

来源:百度知道 编辑:UC知道 时间:2024/05/21 10:20:26
这题有谁帮帮忙,请详细点
设有定义:int n=0,*p=&n,**q=&p;以下赋值语句正确的是
A p=1;
B *q=2;
c q=p;
d *p=5;

*p=&n和p=&n有什么区别??
怎么指针这么繁琐啊!!!!!!!!!

。。。
d
int *p = &n; 这里的*代表 p是一个INT指针
p = &n; 如果是赋值的话,p是一个指针,所以要给地址

这也是C里一个认为可以改的地方,因为它定义指针是在变量前加*
如果 int *p; int n, *p;
这样在连续定义中会有点概念混淆
一般认识在类型后面加*更符合语言定义 --> 类型 变量;
这样定义指针就变成
<int*> p;而不是 int <*p>,更容易让人理解

相同的数组也是一样
好象在C#里数组的定义已经变成 int[] a;
这样类型和变量名就完全隔离开了,和其它的类型定义就相同了

d *p=&n在此题中只能用在初始化,不然就出了,是初始化赋值。p=&n是赋值语句。在此题中不能用在初始化。他们的结果都是给指针p赋值。指针不能赋常值。

d
*p=&n是定义的时候初始化,相当于int a = 0;
p=&n 这个是赋值,相当于 a = 0;

d
没什么区别,前者是在定义的同时初始化,

D

*p的意识是取出p指针里的第1位.

c