1

在我正在阅读的书中遇到了这个例子,它对我来说根本没有意义,我可能遗漏了一些东西,但似乎你用值'10'分配了计数,然后是值'x',这甚至不是一个整数。只是想知道这是否是有效的语法。

这本书是这样说的:

变量 count 和 x 以正常方式声明为整数变量。在下一行,变量 intPtr 被声明为“指向 int 的指针”类型。请注意,这两行声明可以合并为一行:

int count = 10, x, *intPtr;

这是它取自的程序:

#import <Foundation/Foundation.h>
int main (int argc, char *argv[ ])
{
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    int count = 10, x;

    int *intPtr;

    intPtr = &count;

    x = *intPtr;

    NSLog (@"count = %i, x = %i", count, x);

    [pool drain];

    return 0;

}
4

5 回答 5

13

这只是一个声明。声明由描述类型的“基本”部分的初始部分(声明说明符)和以逗号分隔的声明符序列组成每个声明符声明一个单独的名称,并且可能修改基本类型。在 C 中,您可以使用相同的声明说明符声明多个名称

int count, x, *intptr;

相当于

int count;
int x;
int *intptr;

或者,您可以为每个声明器或其中的一些声明器添加一个初始化器。所以

int count = 10, x, *intptr;

是相同的

int count = 10;
int x;
int *intptr;

这就是它的全部。

于 2010-01-08T21:34:43.837 回答
3

相当于

int count = 10;
int x;
int *intPtr;
于 2010-01-08T21:33:00.753 回答
1

这是新手和专家C(和 C++)程序员的常见错误来源,以及逗号运算符。常见的混淆:

int* p, pp;
pp = malloc( sizeof( int ) * N ); /* oops pp is just int, not a pointer */
...
int x;
x = 12, 13, 14; /* and the value of the x is ... */
于 2010-01-08T21:39:41.660 回答
0

逗号表示 x 也是一个 int,*intPtr 也是 int(而 intPtr 是指向 int 的指针)。就像是:

Aunts Mary, Jane, Daryl;
Mary is stupid;
Jane is Old;
Daryl is same as Mary;
于 2010-01-08T21:34:23.497 回答
0

就像是

int count, x;

除了计数被初始化为 10

于 2010-01-08T21:34:58.803 回答