首页 > 解决方案 > 是否可以在定义点为数组文字下标?

问题描述

我想在定义点下标一个数组文字,因为在初始访问之后我不需要数组:

int func(int index) {
   return {1, 2, 3, 4, 5}[index];
}

注意:数组元素比这个例子更复杂。我也省略了边界检查。我只是好奇 C 语法是否允许这种构造/快捷方式。

编译上面的代码会导致:

error: syntax error before `{' token

我在 C 中尝试实现的 Python 等价物:

def func(index):
    return [1,2,3,4,5][index]

标签: pythoncsyntax

解决方案


您可以使用所谓的复合文字

#include <stdio.h>
 
int main(void) {
    printf("%d\n", 
       (int[]){1,2,3,4,5}[2]);
    return 0;
}

请参阅 C 标准草案第6.5.2.5 节复合文字


推荐阅读