c语言可视,C语言中字符串可视为什么的数组?

在C语言中,字符串可视为字符数组。C语言中没有字符串类型,而是使用字符数组来保存字符串,将字符串存放在字符型数组中。

85223ae5d2d01dac881f1c77e336309e.png

在C语言中,是将字符串作为字符数组来处理的。

C 语言中并不存在字符串这个数据类型,而是使用字符数组来保存字符串,字符串是存放在字符型数组中的。

字符数组是指用来存放字符数据的数组。其定义的一般形式为: char 数组名[数据长度] 。字符数组用于存放字符或字符串,字符数组中的一个元素存放一个字符,它在内存中占用一个字节。

那么,字符数组就一定是字符串吗?

对于这个问题,大多教科书中的回答是“是”。其实不然,字符数组和字符串是完全不相同的两个概念,千万不要混淆。分析如下所示的示例代码。#include

#include

int main(void)

{

/*字符数组赋初值*/

char cArr[] = {'I','L','O','V','E','C'};

/*字符串赋初值*/

char sArr[] = "ILOVEC";

/*用sizeof()求长度*/

printf("cArr的长度=%d\n", sizeof(cArr));

printf("sArr的长度=%d\n", sizeof(sArr));

/*用strlen()求长度*/

printf("cArr的长度=%d\n", strlen(cArr));

printf("sArr的长度=%d\n", strlen(sArr));

/*用printf的%s打印内容*/

printf("cArr的内容=%s\n", cArr);

printf("sArr的内容=%s\n", sArr);

return 0;

}

运行结果为:cArr的长度=6

sArr的长度=7

cArr的长度=7

sArr的长度=6

cArr的内容=ILOVEC'

sArr的内容=ILOVEC

从代码及其运行结果中可以看出如下几点。

首先,从概念上讲,cArr 是一个字符数组,而 sArr 是一个字符串。因此,对于 sArr,编译时会自动在末尾增加一个 null 字符(也就是'\0',用十六进制表示为 0x00);而对于 cArr,则不会自动增加任何东西。

记住,这里的 sArr 必须是“char sArr[7]="ILOVEC"”,而不能够是“char sArr[6]="ILOVEC"”。

其次,“sizeof()”运算符求的是字符数组的长度,而不是字符串长度。因此,对于“sizeof(cArr)”,其运行结果为 6;而对于 sizeof(sArr),其运行结果为 7(之所以为 7,是因为 sArr 是一个字符串,编译时会自动在末尾增加一个 null 字符)。因此,对于以下代码:/*字符数组赋初值*/

char cArr[] = {'I','L','O','V','E','C'};

/*字符串赋初值*/

char sArr[] = "ILOVEC";

也可以写成如下等价形式:/*字符数组赋初值*/

char cArr[6] = {'I','L','O','V','E','C'};

/*字符串赋初值*/

char sArr[7] = "ILOVEC";

最后,对于字符串 sArr,可以直接使用 printf 的 %s 打印其内容;而对字符数组,很显然使用 printf 的 %s 打印其内容是不合适的。

通过对以上代码的分析,现在我们可以很简单地得出字符数组和字符串二者之间的区别:对于字符数组,其长度是固定的,其中任何一个数组元素都可以为 null 字符。因此,字符数组不一定是字符串。

对于字符串,它必须以 null 结尾,其后的字符不属于该字符串。字符串一定是字符数组,它是最后一个字符为 null 字符的字符数组。

更多web开发知识,请查阅 HTML中文网 !!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值