3

次のコードの違いは何ですか?

1.

char *p;
strcpy(p,"String");

2.

char *p;
p = "String";

ポインタは同じ文字列を指していますが、違いはありますか?

4

3 に答える 3

1

最初のポイントで、文字列を p が指している memblock にコピーしたいと言っています

(そのため、文字列をコピーできる十分なスペースがあることを確認する必要があります)

2 番目のケースでは、"String" の読み取り専用アドレスを指す p を作成します。

p -> [S][t][r][i][n][g][0]

ただし、 p を次のように宣言しない限り、コンパイラの警告が表示されるはずです。p const *

于 2013-09-14T10:31:23.573 に答える