在 C 中,我试图在任何函数之外声明一个二维数组,以便它可以被函数共享。我知道在单维情况下你可以执行以下操作(并使其表现得像数组):-
#include<stdlib.h>
#include<stdio.h>
int *ptr;
int main(){
int n=5;
int i;
ptr = malloc(n*sizeof(*ptr));
for(i=0; i<n; i++){
ptr[i] = i;
printf("%i\n", ptr[i]);
}
free(ptr);
return 0;
}
我想知道这对于多维情况如何起作用。
最佳答案
您只需使用双指针即可代替单指针:
#include<stdlib.h>
#include<stdio.h>
int **ptr;
int main() {
int n = 5;
int m = 10;
int i, j;
ptr = malloc(n * sizeof(int*));
for(i=0; i<n; i++) {
ptr[i] = malloc(m * sizeof(int));
for(j=0; j<m; j++) {
ptr[i][j] = j;
printf("%i\n", ptr[i][j]);
}
}
for(i=0; i<n; i++) {
free(ptr[i]);
}
free(ptr);
return 0;
}
您应该警惕的事情:
- 单独分配每个数组
- 单独释放每个数组,以及整个数组
关于c - 二维指针的作用类似于二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16761669/