char ch[]={"yhping"};
char ch2[]={'y','h','p','i','n','g'};
char *str = "yhping";
区别是什么。
(1) strlen测的是实际是字符串中的实际长度不包括‘\0’,sizeof测的是计算机实际分配的空间大小。
(2) char ch[10] ="yhping"
是用字符串来使字符数组初始化,而不是用单个字符作为数组的初值strlen值为6,sizeof值为7因为还有‘\0’的值。
(3) char ch2[]={'y',h'',p','i','n','g'};
用来存放字符数据的数组是字符数组,字符数组中的一个元素存放一个字符,strlen值为6,sizeof值也为6,
(4)char *str = "yhping";
表示定义了一个char*型变量str,用字符串常量初始化,C语言对字符串常量是按照字符数组来处理的,,在内存中开辟
一个字符数组空间来存放该字符串常量,但是这数组是没有名字的,所以不能通过数组名来引用,只能通过指针变量来引用。对于字符指针str 初始化,实际上是把字符串的第一个字符的首地址赋给指针变量,使str 指向字符串第一个字符然后使str自动加一指向下一个字符。
strlen值为6,sizeof值为4