1. 声明一个字符数组
`char`:表示数组中每个元素的类型是字符(character),每个字符占用1字节内存。
`s`:数组的名称(变量名),可自定义(如`str`、`buffer`等)。
`[100]`:数组的大小(长度),表示该数组最多能存储 100个字符。
2. 内存分配
在内存中连续分配100字节的空间,每个字节存储一个字符。
示例内存布局:
索引: 0 1 2 ... 99
值: ? ? ? ... ? (初始值不确定,可能是随机值)
3. 用途
存储字符串:在C语言中,字符串以`0`(空字符)结尾。因此:
若用作字符串,实际有效内容最多 99个字符(第100个位置需留给结尾的`0`)。
例如:`s` 可以存储 `"Hello"`(占6字节:'H','e','l','l','o','0')。
存储普通字符数据:也可作为普通字符数组使用(无需`0`结尾),比如存储二进制数据。
4. 注意事项
未初始化:声明后数组内容未被初始化,值是随机的(可能包含垃圾值)。
溢出风险:若存入超过100个字符(如使用`strcpy`复制长字符串),会导致缓冲区溢出(严重的安全漏洞)。
字符串长度:作为字符串使用时,实际可用长度是 99个字符 + 1个`0`。
5. 初始化示例
char s[100] = "Hello"; // 初始化字符串,剩余部分自动补'0'
char s[100] = {0}; // 全部初始化为0(即空字符串)
6. 常见用法
存储用户输入(如`scanf("%s", s)`)。
作为缓冲区处理文本。
在数据结构中作为固定大小的字符串容器。
?? 关键点总结
| 属性 | 说明 |
|--|-|
| 类型 | 字符数组(每个元素为`char`) |
| 总大小 | 100字节 |
| 字符串容量 | 最多99字符 + 1结尾`0` |
| 内存布局 | 连续内存块 |
| 未初始化值 | 随机值(可能含垃圾数据) |
> 安全建议:操作时需确保不越界(如使用`strncpy`替代`strcpy`,或使用更安全的`fgets`读取输入)。