arrays - C:创建一个变量依赖于运行时函数的静态数组?
问题描述
由于静态数组是在编译时创建的,我可以使用通过例如另一个函数获得的变量来设置数组的长度吗?我相信这取决于编译器是否可以足够聪明地知道这个变量将具有什么值?
我获得尺寸槽的示例代码snprinf()
。使用带有标志的gcc编译此代码时没有错误或警告。-Wall
#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
为什么这可能?
解决方案
str
不是静态数组,它是 C 语言中的 VLA,可变长度数组。
推荐阅读
- owasp - 如何使用 ZAP 将请求重定向到另一台主机?
- logging - jboss EAP 7 中独立 ha 配置的双日志输出
- scala - Amazon EMR 上的 Spark on Yarn 资源管理:如何利用所有可用内核执行 Spark 作业
- sql - 在 sqlite3 中计算满足特定条件且不重复的单个元素
- python - NLP:将 CountVectorizer 应用于包含特征列表的列
- javascript - 图片不会出现
- css - 如何让我的 css 在 django 中正确呈现?
- c# - 在程序中使用多个类
- mysql - 需要帮助 - 无法使用 c 中的 API mySQL 连接到 mySQL
- minizinc - 连接 2 个数组 minizinc