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
相关产品推荐
相关产品推荐

