首页 > 编程知识 正文

c语言数组定义,字符串数组赋值

时间:2023-05-06 06:53:08 阅读:12501 作者:3676

C语言目录C/C学习资源(百度云盘链接)。

计算机2级数据(仅高级) () ) ) ) ) ) )。

c语言学习路线(从入门到实战)

编制c语言程序的七个步骤和编程机制

c语言基础-第一个c程序

c语言基础-简单程序分析

VS2019编写简单c程序的示例

简单示例,VS2019调试c语言程序

c语言基础-基本算法

c语言基础-数据类型

c语言中的输入输出函数

c语言流控制语句

c语言数组——一维数组

c语言数组——维数组

上两篇文章分别介绍了一维数组和二维数组,今天我们来看看字符数组

字符数组字符数组顾名思义,是数组元素类型为字符类型的数组。 特殊之处在于数组元素是字符数组。 其定义的一般形式和注意事项与前面介绍的一般数组类似,但其中的类型说明符是char。 当然,类型说明符不仅可以是char,也可以是long、int等,但char类型只占用1字节的大小,因此用long型和int型定义字符数组会浪费资源,所以一般使用char型定义字符数组

一维字符数组

首先,在下面的代码中查看一维字符数组的定义。

# include stdio.h # definesize 20 int main ({ long arr1[ size ]={ ' h ',' e ',' l ',' o ',' w ',' o ' ) char arr2[SIZE]={ 'h '、' e '、' l '、' l '、' o '、' w '、' r '、' l '、' d '、'! ' (; printf (长字符数组占用的内存大小为%dn )、sizeof(arr1); printf(char型字符数组消耗的内存大小为%d(n )、sizeof(arr2); 返回0; }执行结果:

上面的代码定义了不同类型的字符数组来存储相同的字符。 可以看到,它们的内存大小差异很大,long类型的字符数组占用的内存大小是char类型数组的4倍。 由此可知,通过选择char型作为排列型,能够避免存储空间的浪费。 有关初始化字符数组的特点,请参见以下代码。

# include stdio.h # definesize 20 int main () { int i; char arr[SIZE]={ 'h '、' e '、' l '、' l '、' o '、' w '、' r '、' l '、' d '、'!' (; for(I=0; i SIZE; I ) {printf('%c ',arr[i] ); }返回0; }执行结果:

执行结果是“Hello World! ”,有几个空字符。 看看上面代码定义的arr数组。 数组长度为20,初始化的字符元素数为12。 初始化的字符元素数小于数组的长度,编译器在编译时将“ 0”赋给未在后面初始化的数组元素。 这是打印输出中包含空字符的原因。 打印时,也可以将数组中的元素“ 0”视为数组的结束标志。 示例:

# include stdio.h # definesize 20 int main () { int i; long arr[SIZE]={ 'h '、' e '、' l '、' l '、' o '、' w '、' r '、' l '、' d '、'!' (; for(I=0; arr[i]!=' '; I ) {printf('%c ',arr[i] ); }返回0; }执行结果:

此时的输出结果中不包含空字符。 因为它巧妙地使用了字符数组中的“ 0”标志。 当然,也可以用字符串常数初始化一维字符数组。 例如,以下情况:

# include stdio.h # definesize 20 int main () { int i; char arr[SIZE]={ 'hello world!' (; for(I=0; arr[i]!=' '; I ) {printf('%c ',arr[i] ); }返回0; }执行结果:

定义和初始化一维字符数组时,可以不指定长度。 使用字符常数列表和字符串常数初始化的结果有以下不同:

#includestdio.hint main () { int i; char arr1[]={ 'hello world!' (; char arr2[]={'h '、' e '、' l '、' l '、' o '、' w '、' o '、' r '、' l '、' d '、'! " (; printf ('字符串常量初始化的arr1数组的长度为%dn ',sizeof(arr1); printf ('字符常量列表中初始化的arr2数组的长度为%dn ',sizeof(ARR2); 返回0; }执行结果:

执行的结果是,用这两种方法得到的数组的长度不同,在使用字符串常数初始化字符数组的过程中,在存储到存储器中时会自动在字符串后面添加结束符“ 0”,因此得到的字符数组的长度是字符串常数的长度加上1 如果以字符常数列表方式初始化字符数组,则最后不会添加结束符,因此用该方式定义的字符数组的长度是字符常数列表中的字符数。

如果您认为这篇文章有用,请转发给更多的人

C语言中文社区】专为c语言编程学习者打造的干知识共享平台,包括c语言视频教程、学习笔记、电子书、计算机辅助资料等,精选深度文章,打造优秀的干、技能类

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。