私は初心者であるCを勉強しています。 事前に感謝します。'%s'を使ってポインタをcharへ逆参照すると、プログラムがクラッシュするのはなぜですか?
#include<stdio.h>
int main()
{
char s[10];
s[0]='A';
s[1]='B';
s[2]='\0';
char *p;
int i;
p=s;
printf("%c\n", *p); //It's ok.
printf("%s", *p); // or *s...what's wrong here,why does program crash?
return 0;
}
ポインタを期待しており、参照されていない値ではないためです。 –
'%s'は' char'ではなく 'char'を想定しています。 –
すべてのコンパイラの警告をオンにします。良いコンパイラは 'char * p; ... printf( "%s"、* p); '。 – chux