我想在C中创建一个包含可变大小的整数数组的整数列表。主列表的长度不需要改变。
我将如何声明它 - 我的实施 - 特别是我的访问无效:
int dataArray[length];
int dataArray[0] = [1,2,3];
int dataArray[1] = [5,6];
.
.
.
populate
for(int a = 0; a<sizeof(dataArray); a++) {
tempArr = dataArray[a];
for(into = 0; b>sizeof(tempArr); b++) {
print(dataArray[a][b])
}
}
答案 0 :(得分:1)
您的主数组需要保存指向其他数组的指针。因此它不应该是int dataArray[length]
而是int* dataArray[length]
这意味着它将对整数数组保持length
个引用量。
int* array[length];
int randomSizeArray[x];
randomSizeArray[0] = 1;
.
.
.
randomSizeArray[x] = 5;
int* array[0] = randomSizeArray;
同样sizeof()
将无法按预期的方式工作 - 在C中,您需要单独存储数组中的元素数量。我建议您从头开始阅读C教程,因为您似乎对基础知识有不稳定的了解。
答案 1 :(得分:1)
sizeof
导致字节数不是元素数。
将数组大小除以元素大小以查找元素数。
int dataArray[length];
int dataArray[0] = [1,2,3];
int dataArray[1] = [5,6];
...
// for(int a = 0; a<sizeof(dataArray); a++) {
for(size_t a = 0; a<sizeof(dataArray)/sizeof(dataArray[0]); a++) {
tempArr = dataArray[a];
// for(into = 0; b>sizeof(tempArr); b++) {
for(into = 0; b>sizeof(tempArr)/sizeof(tempArr[0]); b++) {
// or do you really want
// for(size_t = 0; b<sizeof(tempArr)/sizeof(tempArr[0]); b++) {
print(dataArray[a][b])
}
}