我的函数目的是在堆上创建一个整数二维数组。在我创建指向整个数组的指针之后,我将该指针作为 void* 类型返回。我觉得还有更好的返回类型,但我似乎无法获得正确的语法。
请让我知道是否可以使用比 void* 更好的返回类型。
请让我知道是否可以使用比 void* 更好的返回类型。
void* create_matrix(int x, int y){
int i, j, count;
int(*matrix)[x] = calloc(y, sizeof *matrix); // a pointer to a full array of size x.
//matrix = address of array
//*matrix = address of first element of array; *(matrix + 1) = address of first element of second array
//**matrix = element that exists at the first element of array; *(*(matrix + 1) + 1) = second element of second array = matrix[1][1]
count = 0;
for(i = 0; i < y; i++){
for(j = 0; j < x; j++){
matrix[i][j] = ++count;
}
}
for(i = 0; i < y; i++){
for(j = 0; j < x; j++){
printf("%d\n", matrix[i][j]);
}
}
return matrix;
}
x
,它根据调用方式而变化,因此您无法将其声明为类型。 - Barmarbool create_matrix(int x, int y, int (*matrix)[y][x])
函数,并要求调用者传入保存指针的位置。返回一个分配成功的标志。 - chux - Reinstate Monica