char c1[]={'a','b','\0','d','e'}; char c2[]="hello";sizeof(c1),strlen(c1),sizeof(c2),strlen(c2)值分别是1234。
对字符数组,有以下几种定义方法:
1) char str[]="12345";
或给字符串加上大括号:char str[]={"12345"};
这种方法定义时,系统会自动在字符串的末尾加上字符串结束符,即 ‘\0’,
2) char str[10]={'1','2','3','4','5'};
这种方法定义时,系统会自动从未初始化的元素开始,将之后的元素赋为\0,如上面的数组str中的元素实际上是:'1','2','3','4','5','\0','\0','\0','\0','\0'
3) char str[]={'1','2','3','4','5'};
这种方法定义时,系统不会自动在字符串的末尾加上字符串结束符;
对字符数组,有以下几种定义方法: 1) char str[]="12345"; 或给字符串加上大括号:char str[]={"12345"}; 这种方法定义时,系统会自动在字符串的末尾加上字符串结束符,即 ‘\0’, 2) char str[10]={'1','2','3','4','5'}; 这种方法定义时,系统会自动从未初始化的元素开始,将之后的元素赋为\0,如上面的数组str中的元素实际上是:'1','2','3','4','5','\0','\0','\0','\0','\0' 3) char str[]={'1','2','3','4','5'}; 这种方法定义时,系统不会自动在字符串的末尾加上字符串结束符; Sizeof计算的是占用内存的大小,c1占5个字节,c2还隐含一个’\0’,占6字节 Strlen是计算字符串长度,遇到’\0’结束。c1的\0前面有两个字符,c2的\0前面就是hello,占5个字节
Sizeof计算的是占用内存的大小,c1占5个字节,c2还隐含一个’\0’,占6字节
Strlen是计算字符串长度,遇到’\0’结束。c1的\0前面有两个字符,c2的\0前面就是hello,占5个字节