在c++中时不支持变量作为数组长度参数的,如 int n=10;byte bs[n];   这样写会提示编译错误”表达式必须含有常量值“。

虽然用变量声明数组大小会报编译错误,但是可以通过指针来动态申请空间实现动数组长度的变量赋值,写法如下:

int length = 10;
int * varArray;
varArray = new int[length];

这样varArray就可以当做数组来用了,这个数组的长度可以在程序运行时由计算得来。如果是普通的数组如int is[10] 编译时必须能确定数组长度,不然会报编译错误,这样灵活性受限比较大。我想这个就是new的存在原因之一吧,在栈中分配的内存,大小都是编译时就确定好的,如果想在运行时来动态计算使用内存的大小的话,就要用new这样的动态分配函数,来达到更高的灵活性。

可以自己声明一个结构体,来代表这个指针实现的数组,这样可读性会高点,用起来也方便点。

注意:c++ 用new分配空间以后,不用的时候要记得delete释放内存,不然会有内存泄露问题。

转自:http://www.cnblogs.com/wangjixianyun/archive/2012/12/11/2812468.html

【C/C++】变量做数组长度相关推荐

  1. 【C++ 深入浅出】C++可以使用变量作为数组长度吗

    首先明确一点:C++是不可以使用变量作为数组长度的 那为什么有些地方的C++用了变量做数组长度,没有报错呢? 那是因为这是C99标准的一部分,叫做 变长数组 即 变量长度数组,这个特性是g++编译器的 ...

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

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

  3. c语言变量作为数组长度,为什么在C中不允许将数组的大小作为常量变量但在C中允许?...

    在C const中,并不意味着"常量"(即,在编译时可评估).它只是意味着只读. 例如,在一个函数中,这个: const int r = rand(); const time_t ...

  4. 为什么栈的数组长度必须是一个常量?而堆的数组长度可以是变量。为什么栈的大小有限制?

    为什么栈的数组长度必须是一个常量?而堆的数组长度可以是变量 栈区数组长度使用变量会报错. 其原因就在于栈是编译器管理的,在程序运行前就已经分配好了空间的大小.而使用变量,编译器无法知道该分配多大的内存 ...

  5. 第六章 C语言数组_C语言变长数组:使用变量指明数组的长度

    在<C语言的三套标准:C89.C99和C11>一节中我们讲到,目前经常使用的C语言有三个版本,分别是 C89.C99 和 C11.C89(也称 ANSI C)是较早的版本,也是最经典的版本 ...

  6. Golang基础(变量[普通变量、数组、切片、map、list、ring]声明及赋值)

    Go语言和其他语言一样都有基本存储容器.可以存储一个或多个值在程序中,方便程序中多次使用容器中内容,这个容器称为:变量 Go语言虽然是静态类型语言,但是支持动态类型语言语法,因为Go语言希望程序员少声 ...

  7. 【Groovy】Groovy 方法调用 ( 字符串切割 | 使用 Java 语法切割字符串 | 使用 Groovy 语法切割字符串直接为变量赋值 | 数组赋值给变量 变量个数小于等于数组长度 )

    文章目录 一.字符串切割 1.使用 Java 语法切割字符串 2.使用 Groovy 语法切割字符串直接为变量赋值 3.数组赋值给变量 变量个数小于等于数组长度 二.完整代码示例 一.字符串切割 在 ...

  8. php 获取数组变量个数组的长度,php数组长度的获取方法(三个实例)

    本节内容: php数组长度的获取方法 PHP中有两个内建的函数:count() 和sizeof(),可以得到数组的长度. 例1: 复制代码 代码示例: $colorList = array(" ...

  9. C语言中,当计算字符数组长度时,用sizeof 和strlen 的原理及两者的区别

    字符数组的长度计算:必须以终止符'/0'作为边界,但对字符数组赋值时,有两种方式: 1: 定义时用字符初始化 (1)char chs[7] = {'a', 'c', '0', 'z', '3','d' ...

最新文章

  1. 从零开始在ubuntu上安装和使用k8s集群及报错解决
  2. wxWidgets:wxBrush类用法
  3. 绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示? 切换目录用什么命令?
  4. Thymeleaf select 使用 和多select 级联选择
  5. 【BZOJ2251】[2010Beijing Wc]外星联络 后缀数组
  6. 躺枪实惨!与新冠病毒“重名”,这款墨西哥国民啤酒宣布暂停生产...
  7. SqlServer2008镜像证书过期处理
  8. 中英文组织机构名过滤
  9. php面试题之一——HTML+CSS(基础部分)
  10. 处理整个磁盘镜像文件的单个分区
  11. IDEA 打包、Spring Boot Maven plugin 打包可执行 Jar 程序
  12. LoadRunner脚本录制
  13. Windows Server 2008 R2更新永恒之蓝 补丁包方法
  14. spring 动态代理_Spring中的两种动态代理
  15. ThinkPad SL400 使用经验小记
  16. 《查拉图斯特拉如是说》读书笔记
  17. 二手苹果8多少钱_苹果期货一手多少钱
  18. html5 运动轨迹绘画,冷知识|简单几步教你用跑步轨迹绘画,用跑画刷爆你的朋友圈!...
  19. Python标准库time
  20. 探针一号的SQL注入学习笔记

热门文章

  1. 公文字体字号标准2020_公文格式的数字顺口溜(收藏)
  2. 基于MATLAB的OFDM系统实现
  3. linux提取字符串特定结果
  4. java 权重_java实现权重随机算法
  5. java jediscluster_方便jediscluster操作的工具类
  6. 小游戏_猜数_JAVA
  7. 1.我和python的第一次亲密接触
  8. MFC listctrl显示缩略图时索引问题和滚动条问题
  9. Java NIO学习系列一:Buffer
  10. Maven类包冲突终极解决小技若干