二维码
微世推网

扫一扫关注

当前位置: 首页 » 快报资讯 » 今日快报 » 正文

C_三种方法创建二维动态数组你知道吗?

放大字体  缩小字体 发布日期:2022-03-30 15:25:19    浏览次数:318
导读

相对来说,创建二维动态数组比一维动态数组更复杂些,可以分别在以下三种情况下创建二维动态数组:已知一维、已知二维、或两者都未知:#include stdio.h#include stdlib.hconst int rows=3;const int Cols=4;void arr2D(int** arr,int rows,int cols){int i,j;for(i=0;irows;i++)// 赋值for(j=0;jcols;j++)arr[i][j]=i*cols

相对来说,创建二维动态数组比一维动态数组更复杂些,可以分别在以下三种情况下创建二维动态数组:已知一维、已知二维、或两者都未知:

#include <stdio.h>#include <stdlib.h>const int rows=3;const int Cols=4;void arr2D(int** arr,int rows,int cols){int i,j;for(i=0;i<rows;i++) // 赋值for(j=0;j<cols;j++)arr[i][j]=i*cols+j+1;for(i=0;i<rows;i++) // 输出for(j=0;j<cols;j++)printf("%4d",arr[i][j]);printf("\n");}int main(){int i,j;// 1 利用指针数组生成一个rows*cols得动态二维数组,但第壹维rows是固定得一个常量int* p[rows]; // const int rows=3;int cols;printf("请输入二维数组得列数(默认%d行):",rows);scanf("%d",&cols);for(i=0;i<rows;i++){p[i]=(int*)malloc(sizeof(int)*cols);if(p[i]==NULL)exit(1);}for(i=0;i<rows;i++) // 赋值for(j=0;j<cols;j++)p[i][j]=i*cols+j+1;for(i=0;i<rows;i++) // 输出for(j=0;j<cols;j++)printf("%4d",p[i][j]);printf("\n");for(i=rows-1;i>=0;i--) // 释放free(p[i]); // 2 利用二维指针,生成一个rs*cs得二维动态数组int** pp;int rs,cs;printf("请输入二维数组得行数和列数(间隔空格):");scanf("%d %d",&rs,&cs);pp=(int **)malloc(sizeof(int *) * rs);if(pp==NULL){printf("pp is null");exit(1);}for(i=0;i<rs;i++){pp[i]=(int*)malloc(sizeof(int)*cs);if(pp[i]==NULL)exit(1);}arr2D(pp,rs,cs);for(i=rs-1;i>=0;i--)free(pp[i]);free(pp);// 3 利用数组指针(行指针)生成一个Rows*Cols得动态二维数组,但第二维Cols是固定得一个常量int (*parr)[Cols]; // const int Cols=4;int Rows;printf("请输入二维数组得行数(默认%d列):",Cols);scanf("%d",&Rows);parr=(int(*)[Cols])malloc(sizeof(int)*Rows*Cols);if(parr==NULL)exit(1);for(i=0;i<Rows;i++) // 赋值for(j=0;j<Cols;j++)p[i][j]=i*Cols+j+1;for(i=0;i<Rows;i++) // 输出for(j=0;j<Cols;j++)printf("%4d",p[i][j]);printf("\n");free(parr); getchar();getchar();return 0;}

-End-

 
(文/小编)
免责声明
• 
本文仅代表发布者:个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,需自行承担相应责任。涉及到版权或其他问题,请及时联系我们删除处理邮件:weilaitui@qq.com。
 

Copyright©2015-2025 粤公网安备 44030702000869号

粤ICP备16078936号

微信

关注
微信

微信二维码

WAP二维码

客服

联系
客服

联系客服:

24在线QQ: 770665880

客服电话: 020-82301567

E_mail邮箱: weilaitui@qq.com

微信公众号: weishitui

韩瑞 小英 张泽

工作时间:

周一至周五: 08:00 - 24:00

反馈

用户
反馈