C语言中的字符数组问题

来源:百度知道 编辑:UC知道 时间:2024/06/08 00:04:16
char ch1[10]={'h','e','l','l','o'};
char ch2[10]={'h','e','l','l','o','\0'};
大家都知道ch1是字符数组,而ch2是字符串。但是为什么我使用gets(ch1)和puts(ch1)依然可以对其输入和输出呢?包括使用其他字符串函数,
如strlen(ch1),返回值为5; strcmp(ch1,ch2)的返回值为0(即认为这两个是相同的)?

gets(ch1)和puts(ch1)具有这个功能,记住就行了。
还有这两个数组都是字符数组。
数组ch1[10]中系统会自动加一个'\0'。表示字符串结束。所以这两个数组时相同的

ch2也是字符数组啊 不是字符串

字符数组和字符串在本质上没有区别
strlen的问题,是内存存储的方式导致的,ch1后面那个一个字节正好是0

这两个是同一个意思啊 char ch1[10]={'h','e','l','l','o'};有10个元素,但只初始化了前5个 后面默认为0,所以前后两个是同一回事....

个人认为字符数组和字符串的同样的东西,多个字符(字符数组)连起来就是一个字符串,本质上没什么区别

ch1[10]={hello00000}
ch2[10]={hello00000}
所以这两个是完全相同的