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);
} //这个是错的,但是我说不明白为什么是错的
展开
 我来答
XoriieInpottn
推荐于2016-01-20 · TA获得超过494个赞
知道小有建树答主
回答量:153
采纳率:100%
帮助的人:153万
展开全部

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"就不行。


懂了吗?

blackbeauty88
2014-08-24
知道答主
回答量:10
采纳率:0%
帮助的人:7.9万
展开全部
a没有初始化吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式