char ch[10]={"yhping"}; char ch2[10]={'y','h','p','i','n','g'}; char *str = "yhping"; 区别是

来源:互联网 发布:数据库linit 编辑:程序博客网 时间:2024/06/07 08:46
1.

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

原创粉丝点击