由于静态数组是在编译时创建的,我可以使用通过另一个函数获得的变量来设置数组的长度吗?我相信这取决于编译器是否足够聪明以知道此变量将具有什么值?
我获取尺寸槽的示例代码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,可变长度数组。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句