strustrup から excersize を実行するだけです: 文字列配列のポインタを宣言して初期化します。できます
char *test1[]={"ddd"}
しかし、できません
char (*test)[] ={"dfsdf"}.
これらの宣言と秒の初期化方法の違いはどれですか?
strustrup から excersize を実行するだけです: 文字列配列のポインタを宣言して初期化します。できます
char *test1[]={"ddd"}
しかし、できません
char (*test)[] ={"dfsdf"}.
これらの宣言と秒の初期化方法の違いはどれですか?
1 つ目は、型へのポインターの配列ですchar
。
2 番目は、タイプ の配列へのポインターchar
です。
この小さなコード スニペットは、違いを理解するのに役立ちます。
#include<stdio.h>
#include<string.h>
int main()
{
char *test1[]={"ddd","aaa"};
printf("[%s]",test1[0]);
printf("[%s]",test1[1]);
char arr[]={"bbb"};
char (*test2)[] = &arr;
printf("[%s]",*test2);
return 0;
}
出力:
[ddd][aaa][bbb]
test1
はポインタの配列で、この配列の各添え字は文字列を指します。
test1[0]
&test1[1]
ポイントされているコンテンツを取得できるようにします。
test2
別の配列へのポインタです。ポインターを逆参照する*test2
と、指されている配列が得られます。
次のコードを使用して、ポインターの配列を作成しました。
char *test1[]={"ddd"};
以下のコードは、配列へのポインターです。 "ddd"
暗黙的に文字の配列です。
char *test1 = "ddd";