C语言数组初始化

C语言数组初始化转载博客代码编译运行环境:VS2017+Win32+Debug1.字符数组的初始化方式C语言中表示字符串有两种方式,数组和指针,字符数组是我们经常使用的方式。变量的定义包括指明变量所属类型、变量名称、分配空间以及初始化。可以看出,变量的初始化是变量定义的一部分。除了const变量需要显示初始化以外,其它变量如果在定义时未显示初始化,编译器会为变量以默认…

大家好,又见面了,我是你们的朋友全栈君。

转载至
这里

代码编译运行环境:VS2017+Win32+Debug


1.字符数组的初始化方式

C语言中表示字符串有两种方式,数组和指针,字符数组是我们经常使用的方式。变量的定义包括指明变量所属类型、变量名称、分配空间以及初始化。可以看出,变量的初始化是变量定义的一部分。除了const变量需要显示初始化以外,其它变量如果在定义时未显示初始化,编译器会为变量以默认值进行初始化。变量的赋值和初始化有着本质的区别,字符数组也是如此,具体见博主的另一篇博客:认识初始化

1.1逐个字符初始化

当定义一个字符数组时,可以采用逐个字符初始化的方式:

char str[10]={ 'h','e','l','l','o'};
   
   
   
  • 1

当显示指定的字符不足字符数组的长度时,编译器将剩余字符置为空字符’\0’。

1.2字符串常量来初始化字符数组

在C语言中,将字符串作为字符数组来处理,因此可以使用字符串来初始化字符数组。

char str[]={
    
    "hello"};
   
   
   
  • 1

也可以省略花括号。

char str[10]="hello";
   
   
   
  • 1

不及字符数组长度时,剩余字符置为空字符’\0’。因此,我们不难得出,当为一个字符数组初始化为空字符数组的做法有如下几种:

char test1[256]="";
char test2[256]={
    
    ""};
char test3[256]={
    
    0};
char test3[256]={
    
    '\0'};
   
   
   
  • 1
  • 2
  • 3
  • 4

2.字符数组的赋值

当为已经完成定义的字符数组赋值时,不能采用类似于初始化的方式为字符数组赋值了。如下语句是错误的:

char str[10];       //已经完成定义(包括编译器默认的初始化)
str={
    
    'a','d','s'};  //错误
str="abc";          //错误
str={
    
    0};            //错误
   
   
   
  • 1
  • 2
  • 3
  • 4

错误的原因是字符数组名代表字符数组的收地址,不可修改,不能作为左值。左值的概念见博客:认识左值与常引用

2.1逐个字符赋值

(1)for循环的方式。

char str[10];
for(int i=0;i<sizeof(str):++i)
    str[i]='\0';
   
   
   
  • 1
  • 2
  • 3

(2)使用memset()赋值,较for循环高效率,建议使用。当然为字符数组置空应该在初始化时完成,不应该再多次一举。

char str[10];
memset(str,0,sizeof(str));
   
   
   
  • 1
  • 2

2.2拷贝赋值

利用已有的字符串,通过memcpy,strcpy或者strncpy等函数实现拷贝赋值,参考代码如下:

char str[10];
char str2[]="hello";
memcpy(str,str2,sizeof(str2));
strcpy(str,str2);
strncpy(str,str2,strlen(str2)+1);
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5

参考文献

[1]C语言字符数组如何初始化?

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/161102.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月18日 下午6:00
下一篇 2022年7月18日 下午6:00


相关推荐

  • Java学习日记14——Lambda表达式以及一些高级语法

    Java学习日记14——Lambda表达式以及一些高级语法Java 学习日记 14 Lambda 表达式 表达式 Lambda 表达式的基本写法 Java1 8 以后才有的 参数 gt 结果 例如 Strings gt s length x gt x x gt System out println aaa 在 Java 中的 Lambda 表达式 大体相当于其他语言的匿名函数或者指针函数 然而在 Java 中 则可以认为是匿名类的一个实例 至于匿名类 在前面已经简单陈述过了

    2026年3月18日
    2
  • SAP Enhancement

    SAP Enhancement(一)什么是增强(Enhancement)?简单地说,增强就是ERP系统中标准程序的出口,在该出口中由用户根据企业实际需求编写客户化逻辑代码。增强是ERP系统设计时考虑到企业实际的流程有可能和系统默认标准流程不同,在标准流程框架下专门留的接口,每个接口对应一个客户化函数,这些出口函数有标准处理程序传入的参数和输出参数,用户可根据系统输入参数做条件编写适合本企业流程的逻辑,然后通过输

    2025年5月24日
    4
  • 三种最短路的总结

    三种最短路的总结

    2021年9月28日
    46
  • .net 调用java WebService简单教程

    .net 调用java WebService简单教程java滴WebService配置比较复杂tomcat+jdk+cxf+spring+(strtus)看你心情吧==首先·创建一个··WebProject把cxf里面的lib再再里面的库复制到你的工程下···我java菜吖··不知道哪些必须滴···懒人全都放进去额接着开始写代码啦··packagecom.ws;importjavax.jws.WebService;@WebServicepublicinterfaceIHello{ publicStringHelloWord(

    2022年7月14日
    19
  • 用户行为路径分析(User Path Analysis)「建议收藏」

    用户行为路径分析(User Path Analysis)「建议收藏」什么是用户行为路径?用户行为路径即抽象用户在网站或APP中的访问路径。其可用桑基图展现,称为用户路径图。什么是用户行为路径分析?用户路径分析追踪用户从某个开始事件直到结束事件的行为路径,即对用户

    2022年7月2日
    25
  • C语言实型变量

    C语言实型变量如果你想了解实型 浮点型 的话那你来对了地方如果你还不知道什么是字节 如何计算字节 占位符和 2 进制位的话请耐心的看完我的另一篇博客整型变量下面的是小写的 L 不是阿拉伯数字 1 双精度浮点型 double 单精度浮点型 float8 个字节 4 个字节 64 位 32 位提供 15 或 16 位有效数字提供 6 或 7 位有效数字 lf f1 7E 308 1 7E 308

    2026年3月20日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号