Ada*_*eld 20
如果要将数组设置为全0,或者数组是字节数组,则可以使用 memset
// Set myArray to all 0's
memset(myArray, 0, numberOfElementsInMyArray * sizeof(myArray[0]));
如果你需要以大于一个字节的单位将它设置为0以外的其他东西(例如将ints 的数组设置为1),那么没有标准函数可以做到这一点 - 你必须编写自己的for循环那.
您可以将其设置为相同的值,但仅限于 0
将所有元素初始化为0:
int myArray[10] = { 0 }; // all elements 0
gcc的页面也有一个答案.
如果它是一个字节值数组,或者您想将每个字节设置为特定值,则可以使用memset:
char xyzzy[100];
int plugh[40];
memset (xyzzy, 7, sizeof (xyzzy)); // all chars set to 7.
memset (plugh, 0x42, sizeof (plugh));  // all integers set to (e.g.) 0x42424242.
另一种可能性是在创建时初始化(每个下面真实初始化为,或在正确的尺寸的模板init函数),然后调用memcpy到BLAT (a)中它到在稍后的日期的实际阵列.
static int template[] = { 1, 1, 1, 1, 1 };
int zorkmid[3];
memcpy (zorkmid, template, sizeof (zorkmid)); // ensure template is at
                                              // least as big as zorkmid.
后一种方法对于使用固定的预先计算的值填充结构也很方便:初始化具有所需字段的虚拟副本然后memcpy它而不是每次需要新实例时手动设置所有字段.
(a) 旁白:词源blat:
在行话文件(见所有定义的术语表)列表blat为任何四个metasyntactic变量{foo, bar, thud, blat},或同义词blast,检测1.
反过来,blast(感觉1)被定义为BLT(不是三明治)的同义词,其"涉及任何大的位字段复制或移动操作".