首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将变量传递给数组维度错误

将变量传递给数组维度错误
EN

Stack Overflow用户
提问于 2013-03-04 01:26:56
回答 2查看 118关注 0票数 1

我在我的程序中使用了int类型的lenAlenB。当我将此变量传递给consensus_a[]consensus_b[]时,显示了以下错误:

代码语言:javascript
复制
expression must have a constant value.

如何将这些变量(lenAlenB)传递给char consensus_a[]consensus_b[]

我的程序中的一小部分:

代码语言:javascript
复制
    int lenA=10, lenB=15;
    char consensus_a[lenA],consensus_b[lenB];
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-04 01:35:30

您可能正在运行一个不符合C99的编译器(可能是因为它比这个版本旧)(如前所述,代码应该使用符合C99的编译器进行编译)。

使用这些编译器,对于表单中的数组

代码语言:javascript
复制
char a[x];

x需要是常量。

你可以使用 const**:**

代码语言:javascript
复制
const int lenA=10, lenB=15;
char consensus_a[lenA],consensus_b[lenB];

enum**:**

代码语言:javascript
复制
enum
{
  lenA = 10,
  lenB = 15
};
char consensus_a[lenA], consensus_b[lenB];

#define**:**

代码语言:javascript
复制
#define lenA 10
#define lenB 15
char consensus_a[lenA], consensus_b[lenB];

malloc 或(如果您不希望它们为常量):

代码语言:javascript
复制
char *consensus_a = malloc(lenA),
     *consensus_b = malloc(lenB);

从技术上讲,应该是:

代码语言:javascript
复制
char *consensus_a = malloc(lenA*sizeof(char)),
     *consensus_b = malloc(lenB*sizeof(char));

但是sizeof(char)是1,所以没有必要包含这个术语。

当使用malloc**,时,记得在使用它们之后** free

代码语言:javascript
复制
free(consensus_a);
free(consensus_b);
票数 4
EN

Stack Overflow用户

发布于 2013-03-04 01:31:15

你的编译器抱怨你试图声明一个可变长度的数组。对于不符合C99标准或更新版本的编译器来说,这是不可能的。使用常量值而不是lenA/lenB

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15188426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档