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