问题 单项选择题

若有定义“int k,*q;”,则下列各选项中,赋值表达式正确的是( )。

A) q=(&k+1)
B) q=&k
C) q=k
D) *q=&k

答案

参考答案:B

解析: 本题考核指针的赋值操作。先来了解C++语言中指针的有关说明:
①本题的定义语句中,在q前面有一个*说明符,表示q是一个指针变量,C++语言规定在指针变量中只能存放存储单元(即变量)的地址。
②因为在定义中,q的基类型为int,所以q中只能存放int类型变量的地址。
③在C++程序中&是求地址符,表达式&k的值是变量k在内存中的地址,而*的作用是求地址中存放的值。
选项A中,&k表示变量k在内存中的地址,而后面的1是整型常量,所以此选项不正确:选项C中,把整型变量的值直接赋给指针变量q,由于赋值没有兼容性,所以这是错误的;选项D中,企图把k在内存中的地址赋给一个整型变量(*q在此代表一整型变量),这也是不允许的,地址值不能直接转换为一个整数。

单项选择题
单项选择题