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

admin2010-03-29  31

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

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

答案2

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

最新回复(0)