【问题标题】:C: Creating a static array with variable dependent on runtime functions?C:创建一个变量依赖于运行时函数的静态数组?
【发布时间】:2020-12-04 10:19:14
【问题描述】:

由于静态数组是在编译时创建的,我可以使用通过例如获得的变量来设置数组的长度吗?另一个功能?我相信这取决于编译器是否可以足够聪明地知道这个变量将具有什么值?

获取尺寸槽snprinf() 的示例代码。使用带有 -Wall 标志的 gcc 编译此代码时不会出现错误或警告。

#include <stdio.h>
    
int main(void)
{
    int mac[6] = {0xAA,0xBB,0xCC,0xDD,0xEE,0xFF};
    int size = snprintf(NULL, 0, "%02X", mac[0]);
    char str[size + 1];

    snprintf(str, size + 1, "%02X", mac[0]);

    printf("%s\n", str);

    return 0;
}

编译运行结果:

AA

为什么会这样?

【问题讨论】:

    标签: arrays c static runtime compile-time


    【解决方案1】:

    str 不是静态数组,它是 C 中所说的 VLA,可变长度数组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-06
      相关资源
      最近更新 更多