You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

char s[] = {"ABC"}是否合法?一维字符数组为何可如此赋值?

字符数组初始化的两个问题解答

1. char s[] = {"ABC"}; 是否合法?

完全合法,这是符合C语言语法的数组初始化写法。

2. 为何一维字符数组能用{"hello"}形式赋值?

这不是什么“二维数组的方式”,只是C语言数组初始化的标准语法:

  • 字符串字面量(比如"hello")本身就是一个以\0结尾的char数组。在初始化一维字符数组时,C语言允许把字符串字面量放在初始化列表的{}中,这和直接写char s[] = "hello";是等价的——{}在这里只是初始化列表的语法标记,和二维数组没有关系。
  • 更直观的等价写法:char s[] = {"hello"}; 等同于 char s[] = {'h','e','l','l','o','\0'};,编译器会自动把字符串的每个字符(包括末尾的结束符\0)依次填充到数组里,所以你提供的代码能正常编译运行,并且正确输出字符串。

附上你给出的可运行代码:

#include <stdio.h>
int main(){
    char s[] = {"hello"};
    printf("%s", s);
    return 0;
}

内容的提问来源于stack exchange,提问作者GongNanyue

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 15:07:06