C语言中说字符串结尾应该是字符'\n',但是看我在下面的代码中结尾是字符'g',不是也可以吗?

#include<stdio.h>intmain(){charname[10]="xiaomingg";char*addr;intvalue;inti;addr=name... #include<stdio.h>
int main()
{
char name[10]="xiao mingg";
char *addr;
int value;
int i;
addr=name;
for(i=0;i<10;i++)
{
value=*addr;
printf("[%x]='%c'=%d\n",addr,value,value);
addr++;
}
return 0;
}
程序一样可以执行啊
展开
 我来答
程序猿3号
2012-12-28 · TA获得超过1811个赞
知道小有建树答主
回答量:1029
采纳率:33%
帮助的人:762万
展开全部

      “C语言中说字符串结尾应该是字符'\n',”   这句话是不对的,字符串的默认结尾是‘\0’,例如:

      char a[] = “abcd”,在内存中是这么存储的:

系统会默认的将最后一位加上一个'\0'做为字符串的结束符。这时,a的数组长度为5,而a的字符串长度为4,即它只有4个字符。

再来看这个:

char a[4] = "abcd";

在VS2010中它会提示你的数组越界了,就是我刚才说的原因,它没有足够的地址去存放它的结束符了。

   

lizhida7
2012-12-28 · TA获得超过277个赞
知道小有建树答主
回答量:529
采纳率:0%
帮助的人:363万
展开全部
字符串结尾应该是'\n'是在用户输入字符的时候做的用户输入完成的判断。也有用-1结尾 的,而在这个程序中字符串是初始化的。字符串长度是一定的。不需要\n了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
miniapp1pwgfsq1ptknk
2012-12-28 · 超过19用户采纳过TA的回答
知道答主
回答量:48
采纳率:0%
帮助的人:42.4万
展开全部
C语言中说字符串结尾应该是字符'\0',

char name[11]="xiao mingg";//编译器自动在末尾加‘\0’所以是11个字符。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
沧海雄风2009
2012-12-28 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8525
采纳率:79%
帮助的人:2795万
展开全部
你什么编译器 我VC6报错

error C2117: 'xiao mingg' : array bounds overflow

再一个,即使不报错 可以输出 那是因为你是用for循环控制输出次数的

因此只输出了10次 所以不会出现因为无结束符而输出后面的乱码

如果你用printf 以字符串格式输出的话 %s 那么 由于后面没有结束符

会多余输出很多 直到后面恰好是一个结束符才会完毕 溢出了··
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小知知快长大
2012-12-28 · TA获得超过267个赞
知道小有建树答主
回答量:434
采纳率:0%
帮助的人:277万
展开全部
char name[10]="xiao mingg";你这很明显了,xiao mingg加一起一共10位,数组刚好能够存下,所以系统让你编译通过系统将你最后一个g也人为是一个字符来计算了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式