1

本を読んでいるときにこの例に出くわしましたが、私にはまったく意味がありませんでした。おそらく何かが足りないのですが、カウントに値「10」を割り当ててから、値「x」を割り当てているようです。 int。これが有効な構文であるかどうか疑問に思っています。

本はこれを言います:

変数countとxは、通常の方法で整数変数として宣言されます。次の行で、変数intPtrは「intへのポインタ」タイプであると宣言されています。2行の宣言を1行にまとめることができることに注意してください。

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 に答える