当前位置: 首页 > article >正文

C语言字符数组初始化的5种方法(附带实例)

所谓初始化,就是在定义的同时进行赋值。

C语言中,初始化字符数组的方式多样,每种方式都有其特定的用途和优势。

1、使用字符串字面量初始化

最常见和简洁的初始化方式是使用字符串字面量。在这种方法中,我们直接将一个用双引号括起来的字符串赋值给字符数组。C编译器会自动在字符串末尾添加空字符'\0',用于标记字符串的结束。

char str[] = "https://xiecoding.cn/c";

在这个例子中,编译器会自动计算数组的大小,包括结尾的空字符,因此,str 数组的实际大小是 14 个字符(13 个可见字符加上一个空字符)。

2、逐个字符初始化

我们也可以通过逐个指定字符来初始化字符数组。这种方法虽然较为繁琐,但在某些情况下可以提供更精确的控制。

char str[] = {'H', 'e', 'l', 'l', 'o', '\0'};

注意,在这种初始化方式中,我们需要手动添加结尾的空字符'\0',否则它就不是一个有效的 C 字符串。

3、部分初始化

如果我们预先知道数组的大小,但只想初始化部分元素,可以使用部分初始化的方式。未被显式初始化的元素会被自动初始化为'\0'

char str[10] = "Hello";

在这个例子中,str 数组的大小是 10,但我们只初始化了前 5 个字符,剩余的 5 个字符会被自动填充为 '\0'。

4、使用指定初始化器(C99及以后版本)

从 C99 标准开始,C语言引入了指定初始化器,允许我们初始化特定索引的数组元素。这种方法在初始化稀疏数组时特别有用。

char str[10] = {[0] = 'H', [4] = 'o', [9] = '!'};

在这个例子中,我们只初始化了索引 0、4 和 9 的元素,其他元素会被自动初始化为 '\0'

5、运行时初始化

虽然不是严格意义上的初始化,但我们也可以在运行时为字符数组赋值,这通常通过 strcpy() 或 strncpy() 函数实现。

/**
*  系统学习C语言 https://xiecoding.cn/c/
**/
#include <string.h>char str[20];
strcpy(str, "Hello, World!");

这种方法允许我们在程序执行过程中动态地改变字符数组的内容。

理解并掌握这些不同的字符数组初始化方法,可以让我们在编程时根据具体需求选择最合适的初始化形式。

在实际编程中,我们还需要注意一些细节,例如:

  • 确保数组大小足够容纳初始化的字符串(包括结尾的空字符),避免缓冲区溢出;
  • 在使用字符数组时,要时刻记住 C 字符串以空字符结尾的特性;
  • 对于需要频繁修改的字符串,考虑使用字符指针而不是字符数组等。

 

http://www.lryc.cn/news/2403329.html

相关文章:

  • npm run dev 报错:Error: error:0308010C:digital envelope routines::unsupported
  • 模板方法模式:优雅封装不变,灵活扩展可变
  • 基于LLaMA-Factory和Easy Dataset的Qwen3微调实战:从数据准备到LoRA微调推理评估的全流程指南
  • 6.6本日总结
  • idea中 maven 本地仓库有jar包,但还是找不到,解决打包失败和无法引用的问题
  • 安全编码规范与标准:对比与分析及应用案例
  • (33)课54--??:3 张表的 join-on 连接举例,多表查询总结。
  • 集群与分布式与微服务
  • 8.axios Http网络请求库(1)
  • Python爬虫实战:研究mechanize库相关技术
  • c++算法学习5——贪心算法
  • SpringCloud学习笔记-3
  • 【时时三省】(C语言基础)局部变量和全局变量
  • An improved YOLACT algorithm for instance segmentation of stacking parts
  • 使用API网关Kong配置反向代理和负载均衡
  • BugKu Web渗透之eval
  • DAY45 可视化
  • 11.RV1126-ROCKX项目 API和人脸检测画框
  • 超构光学与 AR 的深度融合 | 攻克 VAC 与眼动范围难题
  • [ Qt ] | 与系统相关的操作(三):QFile介绍和使用
  • RetroMAE 预训练任务
  • 软件工程:如何做好软件产品
  • 蓝桥杯 省赛 2025python(B组)题目(分析)
  • React - 组件通信
  • 《前端面试题:CSS的display属性》
  • 飞牛使用Docker部署Tailscale 内网穿透教程
  • 《数据挖掘》- 房价数据分析
  • centos中的ulimit命令
  • git提交代码和解决冲突修复bug
  • 华为仓颉语言初识:并发编程之同步机制(上)