字符串,指针,数组问题

来源:百度知道 编辑:UC知道 时间:2024/04/29 17:14:54
1.char sz1[]={'a','b','c'};
char sz2[]= "abc";
sizeof(sz1)与sizeof(sz2)一样吗。两种赋值方式一样吗

2.char *str = "hello\0\t"
strlen(str) = 5;
sizeof(str) = 8 //为什么不是6,\0后的\t 也要分配一个字节,不是已经结束了吗?

问题一:
不一样,sz1[]={'a','b','c'};是一个字符数组,它的后面没有'\0',作为标记,只有三个字符的空间,而char sz2[]= "abc"; 是一个字符串,它的后面自动添加了空字符,所以是四个字符的空间
问题二:
strlen()函数是统计字符串里面到'\0'之前有几个字符,而sizeof统计的是str占用了多少字符,你这个str里有7个字符,系统自动添加一个空字符在最后,所以是八个字符。