指针....为什么指针我觉得不是很难..
我学C大概一个月..中间还看些数据结构...
是不是我还有什么内容没接触到...
我就是把数组弄清楚了..然后指针就很轻松的看过去了...
就是写程序的时候必须脑子很清醒..否则老是出错.
指针和引用
来源:杰立科技 时间:2006-12-30
下面哪一个定义是无效的,为什么,如何修正?
CODE:
a. int ival = 1.01;
b. int &rval1 = 1.01;
c. int &rval2 = ival;
d. int &rval3 = &ival;
e. int *pi = &ival;
f. int &rval4 = pi;
g. int &rval5 = *pi;
h. int &*prval1 = pi;
i. const int &ival2 = 1;
j. const int &*prval2 = &ival;
answer:
a. int ival = 1.01;//不正确。定义一个 int 型变量,应该赋整数。
b. int &rval1 = 1.01;// 不正确。引用是变量的别名,这个变量必须存在的,
引用在声明的同时必须初始化。
c. int &rval2 = ival;// 正确. rval2是一个引用,它指向一个int 型的变量。
d. int &rval3 = &ival;// 不正确。rval3 是一个引用,而&ival 是变量的地址,二者不等。
e. int *pi = &ival; //正确。 声明一个 int 型的指针,并初始化。
f. int &rval4 = pi;//不正确。pi 是指向整型类型的指针,而rval4是一个 int型变量的引用
g. int &rval5 = *pi;// 正确。 rval5是一个引用,它指向一个int 型的变量。pi在
前面已定义为指向int 型变量的指针,并且初始化为指向变量
a,*pi 就代表a,而 a 是一个 int 的变量。
h. int &*prval1 = pi;//不正确。应该写成 int * &prval1 = pi ;prval1 是一个
引用,它指向定义为 int 型 变量的一个指针。
i. const int &ival2 = 1;//正确。const 引用可以用不同类型的变量初始化,也可
以是不可寻址的值。本例属于第二种情况。
第一种情况如:const double num = 9.2;
const int &nref = num;
j. const int &*prval2 = &ival;//不正确。const int &*prval2是错误的表达式,如果表达式为 const int *&prval2 =&ival;也是错误的,
prval2 是一个引用,它指向定义为 const的 int 型变量的一个指针。而ival是一个变量,prval2引用不是指向一个常量,而是指向一个非常量的指针,指针又指向一个const 对象。应该这样改:const int ival ;const int *&prval2 =&ival 这个表达式就正确了。