c语言基础问题?

有语句:char A[ ]={”I am a student”};该字符串的长度为什么是14,不是15?
不是有一个‘\0'作为字符串结束标志吗?
求高手帮忙解答?

字符串的长度与字符串在内存中所占的空间是不一样的。
C语言规定,字符串在内存中存储时,以'\0'作为结束标志。字符串的长度不包括'\0',所以字符串A的长度是14。15是该字符串在内存中所占的字节数,也就是说,必须是15个字节才能存储这个字符串。
补充一点:你用sizeof()测试A,结果是15(sizeof测的是内存空间大小);用strlen()测试A结果是14(strlen测的是字符串的长度).
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-06-21
哦,字符串长度应该是14,只是其所占用的内存空间为15.字符串长度是指字符串本身(包涵当中的空格或是其它符号)的长度,这是我的理解。我在网上找了下,这是别人的说法:

C字符串长度定义规范(转载自金庆的专栏)
因为总是见到C字符串长度相关的错误, 所有定个规范出来, 有利于减少错误.
关键在于C字符串有个结尾\0, 处理时需要注意.
定义字符串长度有两种方式, 一种是用字符串的大小, 一种是字符串的长度.
字符串的大小即内存空间的大小, 而串长度加1才是所需空间.
第2个回答  2009-06-21
如果你用SIZEOF求长度,那么得到值是15,如果你是strlen求长度,得到值是14,sizeof 计算的是占用内存的空间要计算'\0',strlen求的字符串的长度,忽略不记'\0'
第3个回答  2009-07-02
你用什么函数或者功能检测它的长度的?
我用的是Dev C++中的C编译器. sizeof 是15,而strlen是14

原因是sizeof 计算所有字符个数,而strlen已经假定'\0'是字符串以外的结束符号.
#include <stdio.h>
#include <stdlib.h>
main()
{
char A[]={"I am a student"};
printf("%d,%d",sizeof(A),strlen(A));
system("pause");
}本回答被提问者采纳
第4个回答  2009-06-21
你这开始定义数组时就有错误!定义时[]中一定要写个数字,不然会出错!你那问题是14个普通字符再加一个转意字符\0工15个字节!数组中不能放满就以\0来填充,这点要记住!
相似回答