关于定义数组不能乱用变量的小tips
有时我们需要动态的确定数组的大小,可能会采用下面的方式:
int n=5;
int a[n];
注意:上面这种定义方式是错误的,因为在定义数组时,必须明确确定数组的大小,如int a[5],数组大小一定要是一个常量,这样编译器才能给数据分配出确定且准确的空间。
可以这样理解:
1.定义数组时已经涉及到在内存的分配,编译器如果在给数组分配空间时发现数组的大小竟然没有直接给出,而是一个变量,如果这个变量又刚好没有初始化,系统随便分配了一个值,数组大小也是不确定的了。
2.如果是出于想要根据需求动态分配数组大小的话,采用指针+malloc的方法,在堆中动态分配出一个数组,用指针去访问这个数组,是一种更为灵活的方式。
3、数组是一种值类型的变量,而不是引用类型,而不是一个地址,因此这个名字不能是变量,必须给出值的具体长度。
4、数组有上界和下界,数组的元素在上下界内是连续的。因为VisualBasic对每一个索引值都分配空间,所以不要不切实际声明一个太大的数组,数组名应该是常量。
案例:
#include <bits/stdc++.h>
using namespace std;
int a=1e9+7;
char b[1e9+7];//ERROR
int main() {return 0;
}
//被当成double了
//[Error] conversion from 'double' to 'unsigned int' in a converted constant expression
#include <bits/stdc++.h>
using namespace std;
int a=1e9+7;
char b[a];//ERROR
int main() {return 0;
}
//[Error] array bound is not an integer constant before ']' token
#include <bits/stdc++.h>
using namespace std;
int a=1e9+7;int main() {
char b[a];return 0;
}
//这样是ok的
#include <bits/stdc++.h>
using namespace std;
const int a=1e9+7;
char b[a];
int main() {return 0;
}
//变成常量也行
关于定义数组不能乱用变量的小tips相关推荐
- android js变量定义数组长度,js 声明数组和向数组中添加对象变量的简单实例
数组有四种定义的方式 使用构造函数: var a = new Array(); var b = new Array(10); var c = new Array("first", ...
- c语言指针变量的定义数组的长度,【C语言更新】指向数组的指针
文/Edward 前面我们在讲述数组的时候曾经说过,对于数组内部元素的引用方式主要有两种,一种就是使用方括号"[]"的下标索引,另一种就是之前提到过,但是没有细致讲述的指针引用. ...
- c语言变量定义数组,C语言中数组的定义和使用
一.1.一维数组的定义: 类型说明符 数组名[常量表达式]; 注意:常量表达式包括常量与符号常量,不能包含变量. 2.一维数组的引用: 数组名[下标]; 3.一维数组的初始化: a.在定义数组时 ...
- android js变量定义数组,js 声明数组和向数组中添加对象变量的简单实例
数组有四种定义的方式 使用构造函数: var a = new Array(); var b = new Array(10); var c = new Array("first", ...
- android 变量定义数组,android 创建数组
一: private String[] data = new String[]{"Hello", "jike", "world"}; 二: ...
- C++ 用变量定义数组
c 较早的编译器是不同意这样做的,所以一些书籍比方以Tc解说的书本都说数组的下标不能是变量.在vc6.0下亦是如此. 只是在一些较新的编译器如dev c++已经支持了,例如以下代码不会报错 #incl ...
- C语言可以使用变量定义数组
这是在一次研讨会中发现的我知识上的纰漏,在此进行记录. 当时想给学弟学妹讲一下关于动态内存的问题,在讲述时我用了一个初始化变量时不能用变量作为下标.例如: int i = 5; char test[i ...
- C语言 数组在定义时长度不能用变量
问题描述 在数组定义的时候,括号中定义数组长度使用的是整形变量,在dev c++和codeblocks上编译后,没有显示语法错误.但是在普通的oj提交平台上测试后显示语法错误. int n; scan ...
- 【C 语言】数组 ( 数组指针 | 数组指针定义 | 直接定义 数组指针 )
文章目录 总结 一.直接定义 数组指针 二.完整代码示例 总结 int (*p)[3] = NULL; 一.直接定义 数组指针 直接定义 数组指针 , 首先 , 定义一个普通数组 , 之后的 数组指针 ...
最新文章
- qt widget 窗口拉伸_QTDesigner的QVBoxLayout自动随窗口拉伸
- htc one m7刷Linux,HTC one m7官方刷机详细操作教程
- 吴裕雄--天生自然 高等数学学习:多元函数的概念
- 【项目管理】PMO内容整理
- 程序员面试100题之十:快速寻找满足条件的两个数
- WireShark抓浏览器的https包
- 排序算法——堆排序(C++)
- excel合并计算_【Excel】合并计算和模拟分析的应用
- Java并发(二十一):线程池实现原理
- 1038. 统计同成绩学生(20)
- 爬虫python怎么下载_在网上下了一个 python 爬虫程序,怎么运行?
- Eigen官网教程(7)geometry几何模块的实践
- [渝粤教育] 广东-国家-开放大学 21秋期末考试大学英语210262k2
- lamp php用开吗,LAMP环境之PHP安装使用
- Visual Studio 2019 c#的winform开发,基本操作
- 新手从零学电脑组装与维修视频教程
- 写给前端的区块链开发入门指南:零基础开发基于以太坊智能合约的 ICO DApp
- 在就业创业中,您觉得最重要的是什么?
- 卡尔曼滤波的细致讲解从一维到多维
- 国产手机销量大跌,终于被迫降价抛售清理库存