有时我们需要动态的确定数组的大小,可能会采用下面的方式:

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相关推荐

  1. android js变量定义数组长度,js 声明数组和向数组中添加对象变量的简单实例

    数组有四种定义的方式 使用构造函数: var a = new Array(); var b = new Array(10); var c = new Array("first", ...

  2. c语言指针变量的定义数组的长度,【C语言更新】指向数组的指针

    文/Edward 前面我们在讲述数组的时候曾经说过,对于数组内部元素的引用方式主要有两种,一种就是使用方括号"[]"的下标索引,另一种就是之前提到过,但是没有细致讲述的指针引用. ...

  3. c语言变量定义数组,C语言中数组的定义和使用

    一.1.一维数组的定义: 类型说明符 数组名[常量表达式];    注意:常量表达式包括常量与符号常量,不能包含变量. 2.一维数组的引用: 数组名[下标]; 3.一维数组的初始化: a.在定义数组时 ...

  4. android js变量定义数组,js 声明数组和向数组中添加对象变量的简单实例

    数组有四种定义的方式 使用构造函数: var a = new Array(); var b = new Array(10); var c = new Array("first", ...

  5. android 变量定义数组,android 创建数组

    一: private String[] data = new String[]{"Hello", "jike", "world"}; 二: ...

  6. C++ 用变量定义数组

    c 较早的编译器是不同意这样做的,所以一些书籍比方以Tc解说的书本都说数组的下标不能是变量.在vc6.0下亦是如此. 只是在一些较新的编译器如dev c++已经支持了,例如以下代码不会报错 #incl ...

  7. C语言可以使用变量定义数组

    这是在一次研讨会中发现的我知识上的纰漏,在此进行记录. 当时想给学弟学妹讲一下关于动态内存的问题,在讲述时我用了一个初始化变量时不能用变量作为下标.例如: int i = 5; char test[i ...

  8. C语言 数组在定义时长度不能用变量

    问题描述 在数组定义的时候,括号中定义数组长度使用的是整形变量,在dev c++和codeblocks上编译后,没有显示语法错误.但是在普通的oj提交平台上测试后显示语法错误. int n; scan ...

  9. 【C 语言】数组 ( 数组指针 | 数组指针定义 | 直接定义 数组指针 )

    文章目录 总结 一.直接定义 数组指针 二.完整代码示例 总结 int (*p)[3] = NULL; 一.直接定义 数组指针 直接定义 数组指针 , 首先 , 定义一个普通数组 , 之后的 数组指针 ...

最新文章

  1. qt widget 窗口拉伸_QTDesigner的QVBoxLayout自动随窗口拉伸
  2. htc one m7刷Linux,HTC one m7官方刷机详细操作教程
  3. 吴裕雄--天生自然 高等数学学习:多元函数的概念
  4. 【项目管理】PMO内容整理
  5. 程序员面试100题之十:快速寻找满足条件的两个数
  6. WireShark抓浏览器的https包
  7. 排序算法——堆排序(C++)
  8. excel合并计算_【Excel】合并计算和模拟分析的应用
  9. Java并发(二十一):线程池实现原理
  10. 1038. 统计同成绩学生(20)
  11. 爬虫python怎么下载_在网上下了一个 python 爬虫程序,怎么运行?
  12. Eigen官网教程(7)geometry几何模块的实践
  13. [渝粤教育] 广东-国家-开放大学 21秋期末考试大学英语210262k2
  14. lamp php用开吗,LAMP环境之PHP安装使用
  15. Visual Studio 2019 c#的winform开发,基本操作
  16. 新手从零学电脑组装与维修视频教程
  17. 写给前端的区块链开发入门指南:零基础开发基于以太坊智能合约的 ICO DApp
  18. 在就业创业中,您觉得最重要的是什么?
  19. 卡尔曼滤波的细致讲解从一维到多维
  20. 国产手机销量大跌,终于被迫降价抛售清理库存

热门文章

  1. 帝国CMS,文章列表显示
  2. 解决SQL server 2000 个人版 XP能用 不能在win7 64位系统上安装的问题
  3. Android Canvas绘图
  4. 利用ioctl()获取无线速率
  5. 循环链表解决拉丁方阵问题
  6. Solid Converter PDF注册码
  7. nodejs微信公众号端口问题解决方案
  8. 怎么注册外贸邮箱?外贸公司企业邮箱常用哪个?
  9. [译] 为什么我们渴求女性来设计 AI
  10. 4000mAh大电池+云电脑,荣耀V20创造移动办公新体验