c - 在 C 中访问二维数组的元素

标签 c arrays

我在一些我认为非常简单但并不完全理解的事情上遇到了编译器错误。我有一个二维数组,我想将其中一个元素与 switch case 中的另一个元素进行比较。

#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] = {REV_1,REV_2,REV_3};
    char Rev1FirstLetter = Revisions[0][0];
    char Rev2FirstLetter = Revisions[1][0];
    char Rev3FirstLetter = Revisions[2][0];

    char doesntmatter = 5;
    switch(doesntmatter)
    {
        case Rev1FirstLetter:
        {
            [....]
            break;
        }
        case Rev2FirstLetter:
        {
            [....]
            break;
        }
        case Rev2FirstLetter:
        {
            [....]
            break;         
        }
    }

}

我收到编译器错误消息

Error: #268: declaration may not appear after executable statement in block 

上线

char Rev1FirstLetter = Revisions[0][0];
char Rev2FirstLetter = Revisions[1][0];
char Rev3FirstLetter = Revisions[2][0];

那么我是否必须使用指针加偏移量来访问这些元素?我知道你可以将值分配到数组中,例如

Revisions[0][1] = 'F'; 

但我一直认为你可以用同样的方式从数组中读取值。很抱歉提出了初学者的问题,但是有人可以向我解释一下访问这个二维数组中的数据的最佳方法是什么吗?它是否需要指针和偏移量,或者其他方法?

最佳答案

作业没问题。但是,switch 语句存在问题,因为 case 值不是常量表达式。 如果我将 case 值更改为常量表达式,即“A”、“B”,它将使用 c99 标志进行编译。

关于c - 在 C 中访问二维数组的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22202748/

相关文章:

c - C中的指针与指向指针的指针

c++ - 是否有开源音频流客户端或框架?

c - C 中的结构声明错误

php - 为什么我的数组没有用双引号将每个单词括起来?

Javascript 嵌套的 .each() 函数

c - 使用 `realloc()` 在 C 数组堆栈中重新使用整数指针

java - 通过串行端口的 xml 消息传递

arrays - Julia:将分类数组转换为数值数组的最佳方法是什么?

python - 在共享内存中使用 Multiprocessing.Array 时没有剩余空间

javascript - 按属性对对象数组进行排序(多级)