关于C语言字符串的有关问题

关于C语言字符串的问题
char d[2] = { 'd', 'd' };

sizeof(d)=2啊,但是数组不是从0开始算吗,那不是有三个量,d[0]到d[2]?
char e[4] = "eee";

sizeof(e)=4啊,但e[0]到e[4]不是5个量吗?

------解决方案--------------------
char s1[]="ab";
char s2[]={'a', 'b'};

上面的初始化是不一样的。前者以字符串初始化,包含‘\0'结束符号,后者以数组初始化,没有结束符。
------解决方案--------------------
sizeof(d)=2啊,但是数组不是从0开始算吗,那不是有三个量,d[0]到d[2]?

sizeof说明了数组的大小,下标从0开始,有两个元素。没有d[2]这个元素。
------解决方案--------------------
e,数组分配了5个字节大小,但是初始化的是4个,eee和'\0'。
------解决方案--------------------

char d[2] = { 'd', 'd' };

sizeof(d)=2啊,但是数组不是从0开始算吗,那不是有三个量,d[0]到d[2]?(没有D[2],char d[2],说明这个数组长度为2,为两个)
char e[4] = "eee";

sizeof(e)=4啊,但e[0]到e[4]不是5个量吗?(这里你还是理解错了,它说的是数组长度为4,也就说有4个,e[0]='e',e[1]='e,'e[2]='e'e[3]='\0',)

------解决方案--------------------
第一个数组长度就是2, 第二个数组长度就是4, char e[4]就表示长为4的数组, 这个数组里是没有e[4]的, 只有 e[0]到e[3], 访问e[4]属于非法内存访问
------解决方案--------------------
char d[2] = { 'd', 'd' };
字符数组的大小是2,里边也是有两个字符,sizeof的结果当然是2了,数组下标从0开始,那这两个元素当然是d[0]和d[1]了,如果不清楚,需要再看看数组方面的知识

char e[4] = "eee";
这个字符数组表示一个字符串eee,即字符数组里有4个元素,e[0] = e、e[1] = e、e[2] = e、e[3] = \0,所以sizeof的结果是4
------解决方案--------------------
char d[2] = { 'd', 'd' };
表示定义一个char型的数组,数组中有两个元素,d[0]和d[1]。  楼主c语言还要多学习下哈。
char e[4] = "eee";
这个我也有点晕,但是这个使用定义字符串的方法定义的,定义字符串时会自动在字符串末尾加个\0以表示字符串结束,所以就多了一个元素。
------解决方案--------------------
“多一少一”问题占程序员常犯错误的10%以上!
避免“多一少一”问题的方法之一是将比如<10甚至<5的数代入程序片断,搬手指头心算验证一下程序到底应该写为
x、x-1、x+1中的哪个?
<、<=、==、>、>=中的哪个?

------解决方案--------------------
引用:
sizeof(d)=2啊,但是数组不是从0开始算吗,那不是有三个量,d[0]到d[2]?

sizeof说明了数组的大小,下标从0开始,有两个元素。没有d[2]这个元素。


你这里 SIZEOF(D)=2
是CHAR 数组在内存中的字节数
建议 加强基础