我有另一个问题。我可以将数组设置为[fixed] [dynamic]吗?,第一个值是来自文件的读取器(用户使用的传感器数量),另一个值是动态数组[读取时间]。
我正在阅读有关2D动态数组的内容,但我不知道我是否可以这样做。有什么建议吗?。
感谢。
答案 0 :(得分:2)
我可以将数组设置为[fixed] [dynamic]吗?
是。您可以通过执行类似
之类的操作来实现此目的int *arr[fixed];
for (i = 0; i < fixed; i++) {
arr[i] = malloc(length(i) * sizeof(int));
}
length(i)
将返回arr[i]
的长度。
答案 1 :(得分:2)
当然可以......只需声明一个指针数组。然后,您可以使用malloc
和realloc
修改存储在每个元素中的子数组。
struct reading * data[num_sensors];
但你有点谈论这两个维度是动态的。您可能需要:
struct reading ** data = malloc(sizeof(struct reading*) * num_sensors);
答案 2 :(得分:0)
你可以这样做:
#include <stdio.h>
#include <string.h>
#define FIXED 20
int main()
{
/*Array of integer pointers*/
int *pi4_arr[FIXED];
int i4_dyn_length= 0;
int i4_ctr = 0;
printf("Enter the dynamic length of array:");
/* Make sure to enter this value greater than 1 or, program*/
/* will crash at assignment before printf before the return*/
scanf("%d",&i4_dyn_length);
for(i4_ctr =0; i4_ctr < FIXED; i4_ctr++)
{
pi4_arr[i4_ctr] = malloc(i4_dyn_length * sizeof(int));
}/*for(i4_ctr =0; i4_ctr < FIXED; i4_ctr++) */
pi4_arr[0][0] = 1;
printf("\n\npi4_arr[0][0]: %d",pi4_arr[0][0]);
/*Make sure to call free before exit, to avoid memory leak */
return 0;
}