gpt4 book ai didi

c - 麻烦在c中声明一个全局字符串数组

转载 作者:太空宇宙 更新时间:2023-11-04 01:12:51 24 4
gpt4 key购买 nike

以下代码在全局范围内无法编译:

const char *one = "1";
const char *two = "2";
char *nums[2] = {one, two};

错误信息是“initializer element not constant”——这让我很吃惊,因为变量一和二都被声明为常量。使 nums const 不能解决问题。用字符串文字声明 nums (char *nums[2] = {"1", "2"};)确实解决了这个问题,但出于可读性原因,我'我宁愿在我的实际代码中不这样做。

有没有合适的方法让它工作?

最佳答案

C 不允许从变量进行全局初始化,即使这些变量本身是 const。与 C++ 相比,C 具有更严格的“常量表达式”概念。

目前,one是一个可变指针,所以它不可能被认为是一个常量表达式,但更正确的const char * const one = "1"; 在 C 中不行。(在 C++ 中没问题。)

你必须说:

const char * nums[2] = { "1", "2" };

关于c - 麻烦在c中声明一个全局字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8160264/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com