sizeof()
我的问题是,当传递的参数是动态数组可变长度数组时,其行为究竟如何。
让我们考虑一个例子:
int fun(int num_of_chars)
{
char name_arr[num_of_chars] = {0};
/* Do something*/
return sizeof(name_arr);
}
在这个例子中,很明显返回值不是编译时间常数。因为大小取决于num_of_chars
.
来自 C99 标准(6.5.3.4)的引用:
运算符产生其
sizeof
操作数的大小(以字节为单位),它可以是表达式或带括号的类型名称。大小由操作数的类型决定。结果是一个整数。如果操作数的类型是变长数组类型,则计算操作数;否则,不计算操作数,结果是一个整数常量。
我可以从 [....操作数被评估....] 中理解的是,当传递的参数sizeof()
是动态数组可变长度数组时,sizeof()
“表现得像”一个函数而不是一个运算符。
我的理解对吗?