如果我使用int *p;
,那么下列哪一项更正确:
我的意思是确定如何描述如何查看此类代码以及理解int *p;
和char *c;
之间在类型方面的区别的最佳方式。
答案 0 :(得分:4)
p
的类型是“指向int
”的指针。
你可以说p
是一个指针,但你不能说它的类型只是“指针”
答案 1 :(得分:1)
您可能想说:'p'的类型为:“int pointer ”。这应该是清楚和简洁的。没有必要对问题进行哲学化和复杂化。
答案 2 :(得分:0)
我唯一知道的地方是将指针变量描述为具有"指针类型"是标准(例如C11 6.7.9):
10如果没有显式初始化具有自动存储持续时间的对象,则其值为 不定。如果未初始化具有静态或线程存储持续时间的对象 明确地说:
- 如果它有指针类型,则将其初始化为空指针;
- 如果它有算术类型,则初始化为(正数或无符号)零;
- 如果是聚合,则根据这些规则初始化(递归)每个成员, 并且任何填充都被初始化为零位;
- 如果它是一个联合,则根据这些初始化(递归)第一个命名成员 规则,任何填充都初始化为零位;
但它只是在讨论摘要中的类型时才这样做。每当"现实世界"讨论了对象,标准通常使用"指向 type "的指针。短语(例如C11 6.2.5):
29例1指定为''float *''的类型具有''指向float'的类型''。它的类型是 指针,不是浮动类型。这种类型的const限定版本被指定为''float * const'' 而指定为''const float *''的类型不是限定类型 - 它的类型是''指向const的指针 -
答案 3 :(得分:0)
对于任何类型T
和声明T *p;
,p
的类型是“指向T
”或T *
的指针。
没有单一的“指针”类型。所有指针类型都是不同的,并且在引用基类型时命名。