1

strustrup から excersize を実行するだけです: 文字列配列のポインタを宣言して初期化します。できます

char *test1[]={"ddd"}

しかし、できません

char (*test)[] ={"dfsdf"}.

これらの宣言と秒の初期化方法の違いはどれですか?

4

2 に答える 2

1

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と、指されている配列が得られます。

于 2013-01-24T06:01:12.753 に答える
0

次のコードを使用して、ポインターの配列を作成しました。

char *test1[]={"ddd"};

以下のコードは、配列へのポインターです。 "ddd"暗黙的に文字の配列です。

char *test1 = "ddd";
于 2013-01-24T06:03:39.063 に答える