作者在 2008-03-15 22:45:12 发布以下内容
请看这个小题:
试题一:设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是().
(A)p=1; (B)*q=2; (C)q=p; (D)*p=5;
答案选D选项.分析:指针为地址变量,即它指向相应变量在内存中的地址,指针的定义类型标识符为*p,而指
向指针的指针的定义类型标识符则为**q.这里的B选项显然是错误的.这里的P是一个指针变量,指向整型变量的指针变量,其初值为n的地址,int *p=&n;等价于int *p;p=&n;这两句.A选项直接把1赋给了p,而地址1所指向的内容不确定,这样很危险,故是错误的.从定义**q来看,**q相当于*(*q),*q是q所指向的另一个指针变量B选项直接把2赋给了*q,是和选项A犯了同样的错误.因此只有D选项是正确的.
试题一:设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是().
(A)p=1; (B)*q=2; (C)q=p; (D)*p=5;
答案选D选项.分析:指针为地址变量,即它指向相应变量在内存中的地址,指针的定义类型标识符为*p,而指
向指针的指针的定义类型标识符则为**q.这里的B选项显然是错误的.这里的P是一个指针变量,指向整型变量的指针变量,其初值为n的地址,int *p=&n;等价于int *p;p=&n;这两句.A选项直接把1赋给了p,而地址1所指向的内容不确定,这样很危险,故是错误的.从定义**q来看,**q相当于*(*q),*q是q所指向的另一个指针变量B选项直接把2赋给了*q,是和选项A犯了同样的错误.因此只有D选项是正确的.