C 语言 字符指针

来源:百度知道 编辑:UC知道 时间:2024/06/17 17:59:36
main()
{
char *str[11];
scanf("%s",str);
printf("\n%s\n",str);
getch();
}
请教各位
为什么我输入十个以上的字符这个程序不出错啊
还有scanf那边str是一地址
printf那边的应该要加*str吧
讲讲原因啊

不是不出错,而是你没有察觉到错误。
char *str表示声明了11个字符指针,总长度:11*4=44个字节
如果声明写成char str[11],程序写的是正的,不能写成*str

这种错误是危险的,很多错误不会有任何提示,它只是改变了程序中的语义,考虑下面的程序。

main()
{
volatile int a=1;
volatile char str[11];
volatile int b=2;
scanf("%s",str);
printf("\n%s\n",str);
printf("a=%d,b=%d",a,b);
getch();
}