关于字符数组长度,字符串数组长度,和字符串长度的问题 迷糊

字符串“abcd"长度为4,而字符串数组a[]="abcd"长度为5还是不确定?若为a[10]="abcd",字符数组长度为10,所占内存大小sizeof(a)=5.还是10,其余空间哪去了?若a[]={'a','b','c','d'},则a的数组长度是多少?4还是5,此时没有结束符了么?那么a[]="abcd"和a[]{‘a','b','c','d'}长度比较又怎样?

你记住两点:
1.C风格字符串只要是使用双引号(半角)的,都会以\0结束,就是说会多出一个字符。
2.凡是数组没有指名大小的定义,全部都会以赋值号右边的初始化长度作为数组默认大小。
那么你的问题解答如下:
字符串"abcd"长度为4,是因为字符串长度指的是字符串中有效字符的个数,不包含C风格结束符\0,而字符串数组a[]="abcd"长度为5,因为这个是算的数组的长度,也就是所占用的存储空间,当然要包含\0结束符(它也要占用存储空间)。a[10]="abcd"的长度为10,因为你显示指定了字符数组的长度,。所占内存当然就是10咯,它的存储空间是连续的,也就是说,10个字符空间中,前面分别是a,b,c,d和结束符\0,后面全部都是0(被初始化了),总共有5个0,加上前面的abcd和结束符\0,一共10个,他们的存储是连续的。
a[]={'a','b','c','d'},你没有按照双引号定义,因此不算C风格字符串,只是一个字符数组。而你又没有指名大小,那么它的大小等于你初始化的长度,这里就是4,sizeof也等于4,没有结束符\0了。后面一个问题重复了,不解释!
温馨提示:答案为网友推荐,仅供参考
相似回答