You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言如何在运行时拼接单词与数字为标识符实现数组索引

问题结论

你要求的这种运行时直接拼接标识符获取对应变量的需求,在标准C中无法实现。

核心原因

C语言的标识符(变量名、函数名等)属于编译期概念,预处理器的##运算符是在编译的预处理阶段完成拼接,拼接后的标识符会在后续编译流程中被替换为对应的内存地址。编译完成后的二进制程序不会保留任何标识符的字符串信息,运行时没有办法通过拼接字符串的方式匹配到对应的变量。

替代实现方案

如果要实现运行时按数字选择对应数组的效果,可以提前构造指针索引表,通过下标索引的方式实现,完全可以满足你的使用需求,示例代码如下:

#include <stdio.h>

int main(){
    int foo1[2][1] = {{2}, {5}};
    int foo2[2][1] = {{6}, {9}};
    // 构造指针数组,下标对应你要匹配的数字,数字从1开始的话可以将第0位留空
    int (*foo_index[])[2][1] = {NULL, &foo1, &foo2};

    // 这里a是运行时获取的数值
    int a = 1;
    int* print_val = (*foo_index[a])[1];

    printf("Value: %d\n", *print_val);
    return 0;
}

如果是动态链接场景需要匹配符号名,可以使用系统提供的dlsym类API实现,但该方案性能较差,仅适用于特殊场景,普通业务逻辑不推荐使用。

内容的提问来源于stack exchange,提问作者mandeala

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 12:06:03