gpt4 book ai didi

c - 如何在函数开头声明一个数组,然后使用定义的常量对其进行初始化?

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

我试图在函数的开头声明一个字符数组,然后使用定义的常量对其进行初始化,例如:

#define REV_1    {'A','B','C','D'}
#define REV_2 {'E','F','G','H'}
#define REV_3 {'I','J','K','L'}
void myfunction()
{
char Rev1[4];
char Rev2[4];
char Rev3[4];

[...a bunch of code here...]

Rev1 = REV_1;
Rev2 = REV_2;
Rev3 = REV_3;
}

但我收到编译器错误提示

Error: #29: expected an expression
Error: #137: expression must be a modifiable lvalue

我已经通过执行以下操作获得了代码,但理想情况下我想等到稍后再初始化数组。

#define REV_1    {'A','B','C','D'}
#define REV_2 {'E','F','G','H'}
#define REV_3 {'I','J','K','L'}
void myfunction()
{
char Rev1[] = REV_1;
char Rev2[] = REV_2;
char Rev3[] = REV_3;
}

我真正想做的是创建一个二维数组来存储所有 3 个字符数组,例如:

#define REV_1    {'A','B','C','D'}
#define REV_2 {'E','F','G','H'}
#define REV_3 {'I','J','K','L'}
void myfunction()
{
char Revisions[3][4];

[...a bunch of code here...]

Revisions[0] = REV_1;
Revisions[1] = REV_2;
Revisions[2] = REV_3;
}

任何人都可以向我解释声明数组并稍后使用定义的常量对其进行初始化的正确方法吗?或者更好的是解释我将如何使用二维数组来做到这一点?如果这是一个重复的问题,我提前道歉,我无法使用搜索找到这个问题的答案。

最佳答案

你可以像这样创建一个匿名数组:

#include <stdio.h>
#include <string.h>

#define REV_1 ((char[4]){'A', 'B', 'C', 'D'})

int main(void)
{
char Rev1[4];

memcpy(Rev1, REV_1, 4);
printf("%c %c %c %c\n", Rev1[0], Rev1[1], Rev1[2], Rev1[3]);

return 0;
}

输出:

A B C D

关于c - 如何在函数开头声明一个数组,然后使用定义的常量对其进行初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22184126/

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