1. ホーム
  2. c

[解決済み】C言語のchar arrayとchar pointerの違いは何ですか?

2022-04-03 21:57:42

質問

C言語でポインタを理解しようとしているのですが、現在次のようなことで混乱しています。

  • char *p = "hello"
    
    

    で始まる文字配列を指すcharポインタです。 h .

  • char p[] = "hello"
    
    

    を格納する配列です。 こんにちは .

この関数にこれら両方の変数を渡すと、どのような違いがあるのでしょうか?

void printSomething(char *p)
{
    printf("p: %s",p);
}

解決方法は?

char*char[] は異なるタイプ が、すべてのケースですぐにわかるわけではありません。これは、配列 ポインタに分解する つまり、もし型 char[] が提供された場合 char* が期待される場合、コンパイラは自動的に配列をその最初の要素へのポインタに変換します。

あなたのサンプル関数 printSomething はポインタを想定しているので、このように配列を渡そうとすると

char s[10] = "hello";
printSomething(s);

コンパイラは、あなたがこれを書いたように見せかけます。

char s[10] = "hello";
printSomething(&s[0]);