c语言面试题关于字符串,还有字符指针
voidmain(void){chara;char*str=&a;strcpy(str,“hello”);printf(str);}//这个是错的,但是我说不明白为什么是...
void main(void)
{
char a ;
char *str = &a;
strcpy(str, “hello”);
printf(str);
} //这个是错的,但是我说不明白为什么是错的 展开
{
char a ;
char *str = &a;
strcpy(str, “hello”);
printf(str);
} //这个是错的,但是我说不明白为什么是错的 展开
2个回答
展开全部
str是个字符指针,也可以表示为字符数组或者字符串,str = &a;表示str指向的地方只能存下一个字符。
strcpy(str, “hello”);
肯定放不下hello啊,所以会有内存错误
如果你不相信,你把hello换成空串""试试,因为空串占用1字节,str指向的地方能放下。
如果你想知道更多,那么试试下面的这段程序:
#include <stdio.h>
#include <string.h>
void main(void) {
int a;
char *str = (char *) &a;
strcpy(str, "abc");
printf(str);
}
这段之所可以是因为int类型占4个字节,"abc"也占4个,能放下,"abcd"就不行。
懂了吗?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询