こんにちは、私はプログラミングに慣れていません。 次のコードでstr
は文字へのポインタなので、str
には文字 'h'のアドレスが含まれているはずです。したがって、そのアドレスを出力するには%pを使用する必要があります。しかし、%sがどのようにポインタパラメータを出力するために使われているのか分かりません。文字列の文字ポインタについての説明
#include<stdio.h>
int main(){
char s[] = "hello";
char *str = s;
int a[] = {1, 2, 3, 4, 5};
int *b = a;
printf("%s\n", str); // I don't understand how this works ?
printf("%c\n", *str); // This statement makes sense
printf("%c\n", *(str + 1)); // This statement also makes sense.
printf("%p\n",str); // This prints the address of the pointer str. This too makes sense.
printf("%d\n",*b); // makes sense, is the same as the second print.
// printf("%d",b); // I don't understand why str pointer works but this gives a compile error
return 0;
}
明確ではありませんか?なぜ文字列形式指定子が文字列で動作するのですか?それは働くと定義されているので... –
最初のプリントを理解できません。私は最初のプリントが動作する場合は、コメントの最後のプリントも動作するはずだが、それは本当ではないので、私の質問、ありがとうと思う。 –
なぜ 'printf("%d "、b);'エラーを返すべきではありませんか? –