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

技术盛宴

### #1楼

``````#include <string.h>

void array_init( void *start, size_t element_size, size_t elements, void *initval ){
memcpy(        start,              initval, element_size              );
memcpy( (char*)start+element_size, start,   element_size*(elements-1) );
}

// testing
#include <stdio.h>

struct s {
int a;
char b;
} array[2][3], init;

int main(){
init = (struct s){.a = 3, .b = 'x'};
array_init( array, sizeof(array[0][0]), 2*3, &init );

for( int i=0; i<2; i++ )
for( int j=0; j<3; j++ )
printf("array[%i][%i].a = %i .b = '%c'\n",i,j,array[i][j].a,array[i][j].b);
}
``````

``````array[0][0].a = 3 .b = 'x'
array[0][1].a = 3 .b = 'x'
array[0][2].a = 3 .b = 'x'
array[1][0].a = 3 .b = 'x'
array[1][1].a = 3 .b = 'x'
array[1][2].a = 3 .b = 'x'
``````

### #2楼

``````#define VAL_1X     42
#define VAL_2X     VAL_1X,  VAL_1X
#define VAL_4X     VAL_2X,  VAL_2X
#define VAL_8X     VAL_4X,  VAL_4X
#define VAL_16X    VAL_8X,  VAL_8X
#define VAL_32X    VAL_16X, VAL_16X
#define VAL_64X    VAL_32X, VAL_32X

int myArray[53] = { VAL_32X, VAL_16X, VAL_4X, VAL_1X };
``````

## 编辑：可能有用的扩展

``````#define VAL_1(X) X
#define VAL_2(X) VAL_1(X), VAL_1(X)
/* etc. */
``````

``````#define STRUCTVAL_1(...) { __VA_ARGS__ }
#define STRUCTVAL_2(...) STRUCTVAL_1(__VA_ARGS__), STRUCTVAL_1(__VA_ARGS__)
/*etc */
``````

``````#define STRUCTVAL_48(...) STRUCTVAL_32(__VA_ARGS__), STRUCTVAL_16(__VA_ARGS__)

struct Pair { char key[16]; char val[32]; };
struct Pair p_data[] = { STRUCTVAL_48("Key", "Value") };
int a_data[][4] = { STRUCTVAL_48(12, 19, 23, 37) };
``````

### #3楼

``````array = initial_value
``````

### #4楼

``````int myArray[10] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
``````

``````int myArray[10] = { 1, 2 }; // initialize to 1,2,0,0,0...
``````

``````int myArray[10] = { 0 }; // all elements 0
``````

``````int myArray[10] = {}; // all elements 0 in C++
``````

``````static int myArray[10]; // all elements 0
``````

### #5楼

``````// put values 1-8, then two zeroes
int list[10] = {1,2,3,4,5,6,7,8};
``````

### 评论(0)

Initialization & Cleanup

meisme
2013/06/03
125
0
《JAVA编程思想》学习笔记——第五章 初始化与清理

lixiaocheng18
2017/01/05
0
0
c#字符串及数组操作

2013/06/17
104
0
【C++】第4章 复合类型 知识总结

《C++ Primer Plus》第4章知识点总结 内置的C++类型分两组：基本类型和复合类型。本文将介绍复合类型 数组 声明数组的通用格式：typeName arrayName[arraySize]; 数组的初始化 （1）只有在定...

qq_37792173
2017/09/20
0
0

vazor
2012/10/16
89
0

ELK

BeanHo
34分钟前
22
0
PHP一致性hash代码

[TOC] PHP实现一致性hash bash命令 因为下面PHP代码的模拟用户用的是随机数,所以统计结果达不到绝对的均衡. php ./hash.php | sort | uniq -c | sort PHP代码 这是之前学的时候留下来的测试...

94
0
OSChina 周六乱弹 —— 现在看动弹的人都是什么状态

Osc乱弹歌单（2020）请戳（这里） 【今日歌曲】 @薛定谔的兄弟 ：分享洛神有语创建的歌单「我喜欢的音乐」: 《夏日、教室与望着窗外的我》- Candy_Wind 手机党少年们想听歌，请使劲儿戳（这里...

899
11
wamp环境安装redis扩展

36
0

56
0