Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 这是有效的声明吗?_C_Pointers - Fatal编程技术网

C 这是有效的声明吗?

C 这是有效的声明吗?,c,pointers,C,Pointers,这会正确地将其中一个声明为整数,将另一个声明为指向整数的指针,还是只会导致问题 int *countPtr, count; 这是否正确地将一个声明为整数,另一个声明为指向整数的指针 对 这只会引起问题吗 对。由于明显的可读性/维护问题,不鼓励在一行上声明多个类型(尤其是在您的示例中涉及指针时)。这完全没有问题 countPtr将是指向int的指针 计数将仅为常规整数 否,这是一个有效的声明,将按预期工作 书写 int* countPtr, count 将执行相同的操作,但可能会导致混淆。这

这会正确地将其中一个声明为整数,将另一个声明为指向整数的指针,还是只会导致问题

int *countPtr, count;
这是否正确地将一个声明为整数,另一个声明为指向整数的指针

这只会引起问题吗

对。由于明显的可读性/维护问题,不鼓励在一行上声明多个类型(尤其是在您的示例中涉及指针时)。

这完全没有问题

  • countPtr
    将是指向int的指针
  • 计数
    将仅为常规整数

否,这是一个有效的声明,将按预期工作

书写

int* countPtr, count

将执行相同的操作,但可能会导致混淆。

这是一个有效的声明,它将编译

但是,它可能会导致混淆,因此单独声明更安全:

int count;
int *countPtr;
为了提高可读性,您可以记住以下简单规则:

不要在一个声明中混合类型。

你不想看到像
intx,y,*p,t[10],i,f()这样的噩梦

当然

will this just cause problems?

从编程角度讲,不,可读性取决于您如何解释声明
int*countPtr,count。我把它读作“整数持有者计数ptr和整数计数”。所以对我来说没问题。

Woosh。他说的是:它确实“正确地将一个声明为整数,另一个声明为指向整数的指针”,但它也会导致问题,因为它这样做既愚蠢又令人困惑。@user2172993:我不同意奥利的观点-如果你遵循C++风格的
T*p
惯例,那只会让人困惑,而在本例中你没有这样做。对于任何一个已经用C语言编程超过十分钟的人来说,谁是指针,谁不是,这是很清楚的。@JohnBode:我见过像
intx,foo(),*p实代码。所以我会坚持我的信念,在一行上混合类型是令人讨厌的;)
will this just cause problems?