gpt4 book ai didi

c - 二维指针的作用类似于二维数组

转载 作者:行者123 更新时间:2023-11-30 15:48:32 25 4
gpt4 key购买 nike

在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com