相关疑难解决方法(0)

如何将数组的所有成员初始化为相同的值?

我在C中有一个大数组(如果有所不同,则不是C++).我想将所有成员初始化为相同的值.我发誓我曾经知道一个简单的方法来做到这一点.我可以memset()在我的情况下使用,但是没有办法在C语法中构建这样做吗?

c arrays array-initialize initialization

934
推荐指数
13
解决办法
179万
查看次数

初始化一组int

有没有人有办法初始化一个ints 数组(任何多字节类型真的很好),简单到一个非零和非-1值?我的意思是,有没有办法在单个班轮中执行此操作,而无需单独执行每个元素:

int arr[30] = {1, 1, 1, 1, ...}; // that works, but takes too long to type

int arr[30] = {1}; // nope, that gives 1, 0, 0, 0, ...

int arr[30];
memset(arr, 1, sizeof(arr)); // That doesn't work correctly for arrays with multi-byte
                             //   types such as int
Run Code Online (Sandbox Code Playgroud)

仅供参考,memset()在静态数组上使用这种方式可以得到:

arr[0] = 0x01010101
arr[1] = 0x01010101
arr[2] = 0x01010101
Run Code Online (Sandbox Code Playgroud)

另一种选择:

for(count = 0; count < 30; count++)
   arr[count] = 1;    // Yup, that does …
Run Code Online (Sandbox Code Playgroud)

c arrays initialization

32
推荐指数
6
解决办法
5883
查看次数

memset()是否接受大于char的整数?

是否有一个版本的memset()设置一个大于1字节(char)的值?例如,假设我们有一个memset32()函数,所以使用它我们可以执行以下操作:

int32_t array[10];
memset32(array, 0xDEADBEEF, sizeof(array));
Run Code Online (Sandbox Code Playgroud)

这将在数​​组的所有元素中设置值0xDEADBEEF.目前在我看来,这只能通过循环来完成.

具体来说,我对64位版本的memset()感兴趣.知道这样的事吗?

c optimization

31
推荐指数
5
解决办法
2万
查看次数