指针类型的正确术语

时间:2018-03-08 17:27:03

标签: c

如果我使用int *p;,那么下列哪一项更正确:

  • p是指向int的类型,或
  • p指向一个int,类型为指针

我的意思是确定如何描述如何查看此类代码以及理解int *p;char *c;之间在类型方面的区别的最佳方式。

PS:我自己理解指针,但希望能够正确地向我的队友解释它们,希望能给他们一个简单的方法来解决使用指针的解析代码

4 个答案:

答案 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 *的指针。

没有单一的“指针”类型。所有指针类型都是不同的,并且在引用基类型时命名。