2017-11-25 23 views
0

もっと正確に理解するには、以下の説明を参照してください。整数の配列のアドレスを保持するポインタの宣言が必要

int arr[3]; 

さて、コンパイラは警告をスローしてはならないような方法で宣言、xyz = &arr;を書きます。

xyzの宣言方法は?以下のコードのため

int main(void) 
{ 

int arr[3]; 
int *p; 
int **pp; 

p = arr; 
pp = &arr; 

return 0; 
} 

WARNING: 
t.c: In function ‘main’: 
t.c:11:4: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types] 
    pp = &arr; 
    ^

目的:警告を発するべきではないxyz = &arrのような宣言が必要です。

+0

*なぜ*最初の要素ではなく*配列*へのポインタが必要ですか(最も一般的な使用例は少なくとも99%です)? –

+0

面接官からの質問です。 –

答えて

3

int (*xyz)[3]

3個のint素子のアレイへのポインタ。

FYI int**int (*)[3]は同じではありません。

+0

'void * xyz = &arr;'はどうですか? –

+1

@RingØ:それは動作しますが、これはある時点でキャストされる必要があります。その後 ... – coderredoc

関連する問題