动态分配数组内存赋值后,怎样得到数组的行数和列数
来源:互联网 发布:淘宝好评返现怎么罚款 编辑:程序博客网 时间:2024/06/01 09:05
动态分配数组内存赋值后,怎样得到数组的行数和列数
在做项目的时候遇到了动态分配数组内存赋值后,怎样得到数组的行数和列数的问题,下面给大家分享一下我解决这个问题的过程。
1. 首先按普通的数组,我们是怎么得到他的行数和列数的呢?
例如:
int a[3][4];
cout<<sizeof(a[0])/sizeof(int); //这个显示的是列数;为4.
2. 我们按上面的这种方法对动态分配内存后的数组进行操作,
例如:
int **R = new int*[10];
for(int i=0;i<10;i++)
{
R[i]=new int[10];
}
for(int y2=0;y2<10;y2++)
{
for(int x2=0;x2<10;x2++)
{
R[y2][x2] = 150;
}
}
cout <<sizeof(*R[0])/sizeof(int);//这里肯定是不对的,不论怎么修改sizeof中的数值,输出都是不对的。
system("pause");
问题:为什么这样是不对的呢?
答案:动态申请返回的其他是一个指针,C/C++里函数返回不了基本类型里的数组的,返回的仅是退化后的指针数组首元素的指针,而指针是不会记录数组大小的,所以如果要在敌后得到申请的是多大,在申请时自己用一个变量来保存
问题:如果我就是想用上面的方法呢?
答案:是可以的,但是数组内的元素不能有0元素。下面我们来探讨一下这个方法。
3.这个方法:在二维数组的每一行和每一列最后都加上NULL,然后有一个嵌套循环就可以求出行数和列数。程序如下:
int **R = new int*[10+1];
for(int i=0;i<10+1;i++)
{
R[i]=new int[10+1];
}
for(int y2=0;y2<10;y2++)
{
for(int x2=0;x2<10;x2++)
{
R[y2][x2] = 150;
}
}
//再数组每行每列最后加null
for(int y2=10;y2<10+1;y2++)
{
for(int x2=0;x2<10+1;x2++)
{
R[y2][x2] = NULL;
R[x2][y2] = NULL;
}
}
//计算出行列数
int i=0;
int countx=0,county=0;
while(*R[i]!=NULL)
{
i++;
countx++;
}
int j=0;
while(R[0][j]!=NULL)
{
j++;
county++;
}
cout <<countx<<””<<county; //得出正确结果。
system("pause");
- 动态分配数组内存赋值后,怎样得到数组的行数和列数
- 得到二位数组的行数和列数
- java数组的行数和列数
- java数组的行数和列数
- java 数组的行数和列数
- C#获取二维数组的行数和列数
- C#获取数组的行数和列数
- python统计多维数组的行数和列数
- java中获取二维数组的行数和列数
- C#控制台 通过GetLongLength函数得到二维数组的行数与列数
- 从键盘输入行数m,列数n,从堆上动态分配一个m行,n列的int型二维数组,并从键盘
- C#获取二维数组行数和列数
- c++语言 如何计算二维数组行数和列数
- java中二维数组获取行数和列数
- C#获取多维数组的行数与列数
- C++动态申请列数行数不确定的数组
- c语言计算二维数组的行数、列数
- 如何求二维数组的行数与列数
- CAShapeLayer相关内容
- 5-13 统计工龄 (20分)
- 安卓五子棋小游戏
- array_unshift.php
- 单元测试整理
- 动态分配数组内存赋值后,怎样得到数组的行数和列数
- 欢迎使用CSDN-markdown编辑器
- 关于Android 6.0 WebView的两个问题
- bzoj 1096: [ZJOI2007]仓库建设
- swift2.0 学习笔记One
- php和mysql中遇到的乱码问题
- 【OpenCV入门指南】第十三篇 人脸识别
- Android studio 里面的Dependencies 里面没有添加和删除的按钮的解决办法
- CoreText 初级