我是靠谱客的博主 阔达白羊,最近开发中收集的这篇文章主要介绍visual c动态数组_C/C++进阶日记之如何在C中动态分配2D数组?,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

以下是在堆上创建2D数组(或动态分配2D数组)的不同方法。

a2f67c57e2a8f4ff7857b86993899671.png

在以下示例中,我们将“ r ”视为行数,将“ c ”视为列数,并创建了一个二维数组,其中r = 3,c = 4,并遵循以下值

  1 2 3 4
5 6 7 8
9 10 11 12

1.使用单个指针:
一种简单的方法是使用简单的指针算法分配大小为r * c的存储块和访问元素。

#include 
#include
int main()
{
int r = 3, c = 4;
int *arr = (int *)malloc(r * c * sizeof(int));
int i, j, count = 0;
for (i = 0; i < r; i++)
for (j = 0; j < c; j++)
*(arr + i*c + j) = ++count;
for (i = 0; i < r; i++)
for (j = 0; j < c; j++)
printf("%d ", *(arr + i*c + j));
return 0;
}

输出:

1 2 3 4 5 6 7 8 9 10 11 12

2.使用指针数组
我们可以创建大小为r的指针数组。请注意,从C99开始,C语言允许使用可变大小的数组。创建指针数组后,我们可以为每行动态分配内存。

#include 
#include
int main()
{
int r = 3, c = 4, i, j, count;
int *arr[r];
for (i=0; i arr[i] = (int *)malloc(c * sizeof(int));
count = 0;
for (i = 0; i < r; i++)
for (j = 0; j < c; j++)
arr[i][j] = ++count;
for (i = 0; i < r; i++)
for (j = 0; j < c; j++)
printf("%d ", arr[i][j]);
return 0;
}

输出:

1 2 3 4 5 6 7 8 9 10 11 12

3.使用指向指针的指针
我们还可以使用双指针动态创建指针数组。一旦我们动态分配了数组指针,就可以像方法2一样为每行动态分配内存。

include 
#include
int main()
{
int r = 3, c = 4, i, j, count;
int **arr = (int **)malloc(r * sizeof(int *));
for (i=0; i arr[i] = (int *)malloc(c * sizeof(int));
count = 0;
for (i = 0; i < r; i++)
for (j = 0; j < c; j++)
arr[i][j] = ++count;
for (i = 0; i < r; i++)
for (j = 0; j < c; j++)
printf("%d ", arr[i][j]);
return 0;
}

输出:

1 2 3 4 5 6 7 8 9 10 11 12

4.使用双指针和一个malloc调用

#include
#include
int main()
{
int r=3, c=4, len=0;
int *ptr, **arr;
int count = 0,i,j;
len = sizeof(int *) * r + sizeof(int) * c * r;
arr = (int **)malloc(len);
ptr = (int *)(arr + r);
for(i = 0; i < r; i++)
arr[i] = (ptr + c * i);
for (i = 0; i < r; i++)
for (j = 0; j < c; j++)
arr[i][j] = ++count;
for (i = 0; i < r; i++)
for (j = 0; j < c; j++)
printf("%d ", arr[i][j]);
return 0;
}

输出:

1 2 3 4 5 6 7 8 9 10 11 12

最后

以上就是阔达白羊为你收集整理的visual c动态数组_C/C++进阶日记之如何在C中动态分配2D数组?的全部内容,希望文章能够帮你解决visual c动态数组_C/C++进阶日记之如何在C中动态分配2D数组?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部