C 中初始化整数数组(不同维度)的(常量)数组的等效项是什么?
在 JavaScript 中是这样的:
myarray=[ [1,2,3,4], [123,234], [1], [1,2] ]
console.log(myarray=[ [1,2,3,4], [123,234], [1], [1,2] ])
我如何在 C 中做同样的事情?
示例: 这在 C 中有效:
const unsigned char *cf[] = { "\x2", "\x0,\x1,\x2", "\x3,\x4"};
我希望做同样的事情,但不带引号。
直接输入2,[0,1,2],[3,4]
我解释得更好:
这有效:
int c1[]={1,2,3,4};
int c2[]={5,6};
int c3[]={2,3,4}
int *arr[]={c1,c2,c3};
这样我就可以访问每个元素 arr[0][x]
arr[1][x]
现在我有一个大数组。我该如何初始化它?
最佳答案
const unsigned char *cf[] = { "\x2", "\x0,\x1,\x2", "\x3,\x4"};
<小时/>I wish to do the same but without the quotes.
代码可以使用复合文字来形成小型unsigned char
数组。然而,cf[]
(指向unsigned char
的指针数组)会丢失每个数组有多大的信息。
不完全是“不同维度的整数数组的数组”。
int foo() {
const unsigned char *cf[] = {
(unsigned char[]) { 2, ',', 0 },
(unsigned char[]) { 0, ',', 1, ',', 2, 0 },
(unsigned char[]) { 3, ',', 4, 0 }
};
return cf[0][0];
}
<小时/>
注意:
"\x2"
长度为 2 个字节。
"\x0,\x1,\x2"
长度为 6 个字节。
“\x3,\x4”
长度为 4 个字节。
`
关于C 指向整数数组数组的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57957046/