相关疑难解决方法(0)

可以使用const变量来声明C中数组的大小吗?

为什么以下代码会抛出错误?

const int a = 5;
int b[a]={1,2,3,4,5};
Run Code Online (Sandbox Code Playgroud)

而且当我尝试编译没有"const"关键字的上述代码时,我得到了同样的错误:

int a = 5; 
int b[a]={1,2,3,4,5};
Run Code Online (Sandbox Code Playgroud)

为什么会这样?我在这里做的错误是什么?

还有另一个问题:什么时候常量被代码中的实际值替换,即如果我声明一个变量说:const int x = 5; 我知道在RAM中没有为变量x分配内存,但是ROM中的常量变量区域保持值5,并且x在代码中出现x的地方简单地替换为值5.但这什么时候发生的?编译时间?启动时间?预处理时间?

PS:我说的是嵌入式C(在微控制器上运行等),而不是在桌面上运行的C. 因此嵌入式系统必然会有一个ROM(Flash,EEPROM ......).那会发生什么?

c arrays const

37
推荐指数
3
解决办法
3万
查看次数

C中文件范围的可变修改数组

我有一些像这样的代码:

static int a = 6;
static int b = 3;

static int Hello[a][b] =
{
    { 1,2,3},
    { 1,2,3},
    { 1,2,3},
    { 1,2,3},
    { 1,2,3},
    { 1,2,3}
};
Run Code Online (Sandbox Code Playgroud)

但是当我编译它时,它说错误:

在文件范围内可变地修改了"Hello"

怎么会发生这种情况?我该怎么办呢?

c arrays static

30
推荐指数
2
解决办法
6万
查看次数

在C中,为什么const变量不能用作数组大小初始值设定项?

在以下代码中,const int不能用作数组大小:

const int sz = 0;
typedef struct
{
   char s[sz];
} st;

int main()
{
   st obj;
   strcpy(obj.s, "hello world");
   printf("%s", obj.s);
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

c

12
推荐指数
3
解决办法
4903
查看次数

标签 统计

c ×3

arrays ×2

const ×1

static ×1