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

C语言如何创建字符数组?现有编写的代码运行报错该如何解决?

报错原因

你的代码出现报错的核心原因是:C 语言不允许在全局作用域执行赋值类的执行语句。你在全局区域先声明了const char *skillNames[8]数组,之后的逐个给数组元素赋值的语句属于可执行代码,只能放在函数内部,只有变量初始化操作可以在全局作用域完成。

解决方法

有两种常用的修复方案:

  • 方案一:声明数组的同时完成初始化,适合数组内容固定不需要后续修改的场景
#include<stdio.h>
#include<stdlib.h>
#include"boolean.h"

// 声明同时初始化,编译器会自动计算数组元素个数,无需手动指定长度
const char *skillNames[] = {
    "Darth Vader",
    "Han Solo",
    "Master Yoda",
    "Luke Skywalker",
    "Obi Wan Kenobi",
    "Chewbacca",
    "Emperor Palpatine",
    "Princess Leia"
};
  • 方案二:将赋值逻辑移到函数内部,适合需要后续动态修改数组内容的场景
#include<stdio.h>
#include<stdlib.h>
#include"boolean.h"

const char *skillNames[8];

int main() {
    // 赋值操作放在函数内部即可正常执行
    skillNames[0] = "Darth Vader";
    skillNames[1] = "Han Solo";
    skillNames[2] = "Master Yoda";
    skillNames[3] = "Luke Skywalker";
    skillNames[4] = "Obi Wan Kenobi";
    skillNames[5] = "Chewbacca";
    skillNames[6] = "Emperor Palpatine";
    skillNames[7] = "Princess Leia";
    
    // 此处写你的业务逻辑
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 01:45:04