文字配列を宣言する従来の方法は次のとおりであることを学びました。
char c[] = "John";
ただし、次のように宣言できることにも気付きました。
char *c = "John";
これはどのように機能しますか?ポインターと関係があることは知っていますが、誰か詳しく教えてください。どんな助けでも大歓迎です。
わかりました..ここで混乱しないことを願っていますが、このように見えます。
="John" と書くと、プログラム メモリのどこかに文字列が置かれ、'\0' で終了します。
そのため、通話に違いはありません。どちらも、プログラム メモリ内の文字列の先頭を指す char ポインターを作成します。
たとえば、malloc() を使用してこのメモリを割り当てるとします。ポインターは、プログラム メモリ内のどこかではなく、ランタイム メモリを指します。
最初の例でc
は、の配列ですchar
。しかし、次の場合:
char *c = "John";
c
here は配列ではなく、char *
文字列リテラルへのポインター (型) です。C では、ポインターと配列は異なる型です。
ポインターと配列について知りたい場合は、以下のリンクが役立ちます。