Cプログラムに次のコードがあると仮定しましょう。
#include <stdio.h>
void PrintSomeMessage( char *p );
int main(int argc, char *argv[]) {
char arr[10] = "hello";
PrintSomeMessage(&arr[0]);
return 0;
}
void PrintSomeMessage(char *p)
{
printf("p: %s",p);
}
なぜこの出力は、単一の文字「h」ではなく、単語全体「hello」になるのでしょうか?
ただし、"%c"
フォーマッタでは、1文字だけが印刷されます。それでも、このアドレスの各文字のメモリアドレスは異なります。誰か、私に説明してください?
それでも、このアドレスの各文字のメモリアドレスは異なります。
メモリアドレスは異なりますが、文字の配列としてシーケンシャルです。最初の要素のアドレスを渡して%s
を使用すると、printf
は、'\0'
が見つかるまで、指定されたアドレスから始まるすべての文字を出力します。