int main()
{
char a;
char *str=&a;
strcpy(str,"hello");
printf(str);
return 0;
}
这个里面把一个字符串装入一个字符的指针,至少不影响这个的输出吧,他只不过会把其他的内容覆盖
这个不好说,如果没有覆盖掉重要的信息的话,应该还能输出。如果覆盖掉了返回值地址,或者覆盖了一个指针变量,同时又访问了它,等等可能导致程序崩溃。
首先你要弄清楚什么叫非法访问,你未分配内存但是往非法内存写,编译的时候,没有检验str指向的内存是否合法,这个检验在执行的时候才做的
所以,编译可以通过,执行时非法内存访问(但是有的编译器优化后可能正确的hello,也可能在hello后面跟上一大堆乱码)
用VC可以输出,但同时也会报错,最好不要这样写。
char 是单个字符
char *str=&a;
strcpy(str,"hello"); hello是字符串