当我们写这样的东西时
int arr[5] = 0;
or int arr[5] = {0};
没有问题
但是当我们做这样的事情时
int arr[5];
arr[5] = {0};
发生错误。对此有何解释?
数组可以初始化,但不能直接赋值,这只是语言定义的一部分。您可以使用 C99 做您想做的事情memcpy()
使用复合文字:
int arr[5];
/* ... */
memcpy(&arr, &(int [5]){ 0 }, sizeof arr);
与海湾合作委员会typeof
扩展,您可以添加更多安全性:
memcpy(&arr, &(typeof(arr)){ 0 }, sizeof arr);
在 C89 中,您必须为源数组命名:
{ static const int zero[5] = { 0 }; memcpy(&arr, &zero, sizeof arr); }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)