如果 n 为 int 类型的变量,一个指针变量定义为 int *p = &n;,则下列说法正确的是( )。
拿到题先分清'指针变量存什么'和'指针指向的值是什么':p存的是n的地址,*p才是n的值,直接代入选项排除即可。
很多同学习惯把指针变量和它指向的值混为一谈,看到'p'就下意识想成'n',或者把'p'和'*p'当成一回事。另一个坑是选项D,它把'p指向的值'和'p存的地址'强行画等号,利用视觉相似性迷惑人,其实一个是n,一个是&n,差远了。
这道题考的是C++指针的基础语义:指针变量存的是地址,解引用(*)才得到值。int *p = &n; 这行代码里,p是一个int指针变量,&n是n的地址常量,赋值后p的值就是n的地址。因此p指向的值为*n,即n本身。记住:指针变量存地址,指针指向的值是变量内容。
GESP四级喜欢用这种'定义即答案'的题筛人:不考复杂运算,只考你是否真正理解指针变量和它指向的值是两个东西。命题人特意把p和*n混在选项里,看你能不能一眼分清。四级试卷'考查基础语法细节'的定位下,这类题能高效筛掉只会背'指针是地址'却分不清'指针变量值'与'指针指向值'的半懂考生。