Cにはまったく違いはありません
void function1(char str[]);
void function2(char *str);
は、引数として関数に渡されると にchar str[]
単純に還元されるためです。また、レコードについては、関数がそれを と見なすのとまったく同じです。char *
char str[20]
char *str
文字列が次のように初期化された場合に違いが生じるかどうかについては、
char *name = "John";
はい、そうです!ここでは、その文字列のアドレスがJohn
ポインターに割り当てられてname
おり、後で別のアドレスを再割り当てできますname
。
char *name="John";
name="Mary"; //Works in C
しかし、
char name[]="John";
文字配列オブジェクトname
を に初期化してJohn
います。ここでの違いは、初期化後に別の文字列を再割り当てできないことですname
。C では、次のように誤りがあります。
char name[]="John";
name="Mary";// Wrong
質問を投稿する際に、フォーラムを 1 分間検索して、その質問が既に回答されているかどうかを確認してください。あなたの質問の最初の部分は何度も尋ねられ、非常によく回答されています。2 番目の部分については本当に混乱しているように見えたので、私は答えました。ここで。