kae*_*atl 41 c arrays initialization
这可能是一个愚蠢的问题,但是可以为数组而不是全部分配一些值吗?澄清我想要的东西:
如果我需要一个像{1,0,0,0,2,0,0,0,3,0,0,0}
我可以创建它的数组:
int array[] = {1,0,0,0,2,0,0,0,3,0,0,0};
Run Code Online (Sandbox Code Playgroud)
该数组的大多数值都是'0'.是否可以跳过此值并仅分配值1,2和3?我想到的是:
int array[12] = {0: 1, 4: 2, 8: 3};
Run Code Online (Sandbox Code Playgroud)
hac*_*cks 73
是否可以跳过此值并仅分配值1,2和3?
在C中,是的.使用指定的初始值设定项(在C99中添加,在C++中不受支持).
int array[12] = {[0] = 1, [4] = 2, [8] = 3};
Run Code Online (Sandbox Code Playgroud)
上述初始值设定将初始化元件0
,4
并且8
阵列的array
与值1
,2
和3
分别.Rest元素将初始化为0
.这相当于
int array[12] = {1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0};
Run Code Online (Sandbox Code Playgroud)
最好的部分是列出元素的顺序无关紧要.人们也可以这样写
int array[12] = {[8] = 3, [0] = 1, [4] = 2};
Run Code Online (Sandbox Code Playgroud)
但请注意,里面的表达式[ ]
应该是一个整数常量表达式.
nal*_*zok 13
这是我的琐碎方法:
int array[12] = {0};
array[0] = 1; array[4] = 2; array[8] = 3;
Run Code Online (Sandbox Code Playgroud)
但是,从技术上讲,这不是"初始化"数组:)
另一种方法是为memset
数组中的所有元素赋予默认值,然后分配特定元素:
int array[12];
memset(array, 0, sizeof(int) * 12); //if the default value is 0, this may not be needed
array[0] = 1; array[4] = 2; array[8] = 3;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5099 次 |
最近记录: |