一道 c 题目 (求什么?)

来源:百度知道 编辑:UC知道 时间:2024/06/24 13:47:39
若有以下说明和定义
??typedef int *INTEGER;
??INTEGER p,*q;
??以下叙述正确的是(B)。 // 为什么?????
A) P是int型变量
B) p是基类型为int的指针变量
C) q是基类型为int的指针变量
// q 不是指针吗 ? (我选了C ) 为什么不对?????
D) 程序中可用INTEGER代替int类型名
??

因为可用*INTEGER代替int,也就是说*INTEGER是int
如果这样定义:
int *p,**q;
*P是指针,没有问题吧!

这里的定义:
INTEGER p,*q;
可以这样理解:
把INTEGER p,*q;看成:*INTEGER *p,**q; 前面都加上*,
这样就等于前面的int *p,**q;

因此选B

你选错了。q是一个指向指针的int型指针变量。因为前面的typedef是把int替换成*INTEGER了,而后面的INTEGER p实际上就是一个指针,而且是指向整型变量的指针。如果把后定义的那两个变量还原应该就是*p和**q。这样你可以看的明白些。如果要说对变量q的形容应该就是q是指向基类型为int的指针变量的指针变量。
如果在内存中表示,基类型为int的指针变量移动一个单位是移动了两个字符,那q移动一个单位就是移动2*两个字符。

q 是指向指针的指针