您的位置:首页 > 编程语言 > C语言/C++

C动态非连续数组

2015-08-19 23:16 218 查看
#include<stdio.h>
#include<stdlib.h>

// 1 为行地址分配内存 即二级指针
// 2 为每行分配一片内存,
// 3 释放内存

//记得释放内存

void  main()
{
printf("动态非连续二维数组,可随意填写行和列,\n");
int x, y;
scanf_s("%d%d", &x, &y);                //设置行和列
//二级指针可以存放指针数组的地址
//动态分配一片内存,用来存放指针数组,每一个元素都是一个地址,这里的地址是行地址
//然后将指针数组的地址传递给pp保存
int **pp =(int **) malloc(sizeof(int *)*x);    //分配内存 并且转换成int**类型
// 注意这里是  sizeof(int *)*x   代表存放行地址
//下面使pp保存的地址进行赋值 对应每行的地址 行即一维数组 所以上面的才是 sizeof(int *)*x
for (int i = 0; i < x; i++)
{
pp[i] = malloc(sizeof(int)*y);    // 分配每行sizeof(int)*y大小的内存
// 并且将每行的首地址传递给pp[i]
}
int num = 0;
for (int i = 0; i < x; i++)
{
for (int j = 0; j < y; j++)
{
pp[i][j] = num++;
printf("%4d", pp[i][j]);
}
printf("\n");
}
for (int i = 0; i < x; i++)
{
free(pp[i]);
}
free(pp);

getchar();
getchar();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 动态数组