C++在数组元素个数未知情况下声明数组
我们都从书上学习的方法,定义一个数组需要数组名、类型以及数组元素个数,一般定义必须明确元素的个数,否则无法通过编译。
1、
int a[];
2、
int n;
int a[n];
就想上面这两种情况,肯定无法通过编译的。
当然有一种情况不用定义元素个数,就是在声明的时候就将数组进行初始化赋值。
int a[] = {,,,}
这种情况是可以的。
那当我不想进行初始化赋值,又不能确定元素个数时,我们该如何声明这个数组呢?
我相信很多人遇到过这个问题,我也一样。今天我终于找到这个问题的解决方案——利用动态声明的方式声明一个数组。
首先,我们来看看一维数组的定义,代码如下:
int n;
int *a = new int[n];
当然,动态声明一位数组,实质是根据n的值向内存申请了n*sizeof(int)大小的空间,在数组使用完之后,需要释放这个空间:
delete []a;
那么二维数组如何通过动态声明进行声明呢?代码如下:
int **a = new int*[m]; //首先声明一组指向各行指针
for(int i = ;i<m;i++)
a[i] = new int[n] //再声明各行的每列元素的指针
同样,使用完数组还需释放内存空间:
for(int i = ; i<m;i++)
delete []a[i];
delete []a;
最后要注意的一点是,动态声明的二维数组中,a[k]是一个int*类型,是一个指针,因此只能使用a[i][j]或*(*(a+i)+j)访问相应的元素,绝对不能使用a[i*n+j]的方式访问。
C++在数组元素个数未知情况下声明数组的更多相关文章
- C++数据个数未知情况下的输入方法
我们经常需要输入一串数,而数据个数未知.这时候就不能以数据个数作为输入是否结束的判断标准了. 这种情况下,我们可以用以下两种方法输入数据. 方法一:判断回车键(用getchar()=='\n'即可判断 ...
- int 存储大小 数组元素个数
为了得到某个类型或某个变量在特定平台上的准确大小,您可以使用 sizeof 运算符.表达式 sizeof(type) 得到对象或类型的存储字节大小.下面的实例演示了获取 int 类型的大小: 实例 # ...
- JS对象 指定分隔符连接数组元素join() join()方法用于把数组中的所有元素放入一个字符串。元素是通过指定的分隔符进行分隔的。
指定分隔符连接数组元素join() join()方法用于把数组中的所有元素放入一个字符串.元素是通过指定的分隔符进行分隔的. 语法: arrayObject.join(分隔符) 参数说明: 注意:返回 ...
- 把cookie以json形式返回,用js来set cookie.(解决手机浏览器未知情况下获取不到cookie)
.继上一篇随笔,链接点我,解决手机端cookie的问题. .上次用cookie+redis实现了session,并且手机浏览器可能回传cookies有问题,所以最后用js取出cookie跟在请求的ur ...
- html2canvas如何在元素隐藏的情况下生成截图
html2canvas官网地址:http://html2canvas.hertzen.com/ github地址:https://github.com/niklasvh/html2canvas/ 从官 ...
- JS如何在不给新空间的情况下给数组去重?
1.先排序,在让相邻元素对比去重 const nums = [3, 1, 1, 5, 2, 3, 4, 3, 5, 5, 6, 4, 6, 6, 6]; Array.prototype.arrayNo ...
- java_不知道数据类型情况下,数组遍历-反射
if(items.getClass().isArray){ this.collection = new ArrayList(); int length = Array.getLength(items) ...
- python 数组元素个数
list=[1,2,3,{1,4,5,6,7}] print(len(list)) 输出4
- Perl: print @globbing."\n"; 和 print @globbing; 不一样,一个已经转换为数组元素个数了
48 print @globbing."\n"; 输出: 3
随机推荐
- 自己对WSO2 ESB 见解
这周没想到要更新什么内容,就把我最近工作接触的WSO2 ESB简单介绍下吧. 前提: 一切文档,知识都要与官方文档为准. WSO2 ESB: http://wso2.com/products/ ...
- java菜鸟篇<一> 对JsonObject 和JsonArray知识点理解
今天遇到从前台拿值(json数组格式),从request里边取值,然后经过一系列的处理方式,在用request返回去 1.先把request里的值赋值给String string类型的变量 2.因为前 ...
- poj2774 Long Long Message(后缀数组or后缀自动机)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Long Long Message Time Limit: 4000MS Me ...
- Gnome快捷键
1.Gnome快捷键 http://wiki.ubuntu.org.cn/Gnome%E5%BF%AB%E6%8D%B7%E9%94%AE 2.
- C++ Primer day 01
1.标准输入与输出 #include<iostream> int main(){ int v1,v2; std::cout<<"Enter two numbers:& ...
- Effective Java单元测试TestNG - 就是爱Java
TestNG是另一种单元测试的framework,与JUnit的类似,这次Mix将使用它来撰写测试程序,大部分所引用的class package都一样,只差在JUnit与TestNG的字样,可以直接用 ...
- asm_c515c.uew
/L20"ASM for C515C" Nocase Line Comment = ; String Chars = "' DisableMLS File Extensi ...
- C# 计划任务
计划任务 : 个人理解, 就是后台控制程序要求在一定的时间执行相应的任务. 直接上代码: 之前,因为工作需要. 要求每天在凌晨2:00,执行要做的数据 1.1 声明一个接口 Ijob 方法: 执行 ...
- Android studio修改debug.keystore
在android studio项目中配置自定义的debug keystore 方法/步骤 在项目的build.gradle中添加如下内容: android { signingConfigs ...
- Android 匿名共享内存Java接口分析
在Android 匿名共享内存驱动源码分析中介绍了匿名共享内存的驱动实现过程,本文在Android匿名共享内存驱动基础上,介绍Android匿名共享内存对外Android系统的匿名共享内存子系统的主体 ...