C语言使用const定义数组时的错误原因
来源:互联网 发布:linux nano 怎样保存 编辑:程序博客网 时间:2024/05/22 00:26
在c语言编程中我们这样定义数组时编译器回报一个错误
const int n=5;int ar[n];
这确实是一个很棘手的问题,它会迫使我们用动态开辟空间的方法来定义数组,但是我们使用动态开辟的方法比较复杂,容易出现错误。所以我们需要解决这个问题。为什么会出现上面原因呢?(在c++中是可以的)
主要原因是:
1.这个问题讨论的是“常量”与“只读变量”的区别。常量肯定是只读的,例如数字5, 字符串“abc”等,肯定是只读的,因为程序中根本没有地方存放它的值,当然也就不能够去修改它。而“只读变量”则是在内存中开辟一个地方来存放它的值,只不 过这个值由编译器限定不允许被修改。C语言关键字const就是用来限定一个变量不允许被改变的修饰符。上述代码中变量n被修饰为 只读变量,可惜再怎么修饰也不是常量。而ANSI C规定数组定义时维度必须是“常量”,“只读变量”也是不可以的。
2.在ANSI C中,这种写法是错误的,因为数组的大小应该是个常量,而const int n,n只是一个变量(常量 != 不可变的变量,但在标准C++中,这样定义的是一个常量,这种写法是对的),实际上,根据编译过程及内存分配来看,这种用法本来就应该是合理的,只是 ANSI C对数组的规定限制了它。那么在c语言中我们如果想定义一个常量该怎么定义呢?在C语言中我们定义常量的方法可以通过#define宏定义或者enum,这两个是C语言中常用的定义常量的方法。这样上述问题就可以解决了。
1 0
- C语言使用const定义数组时的错误原因
- c语言-----对数组使用const的方法
- C语言返璞归真之修改const常量和使用变量定义数组长度
- C语言定义数组时使用枚举作为数组的下标
- C语言中数组的定义和使用
- 黑马程序员--C语言之数组的定义以及使用
- C中const 定义常量的使用
- C语言结构体数组的定义
- C语言中数组的宏定义
- iOS中C语言的数组定义
- C语言一维数组的定义
- c语言获取定义数组的长度
- 关于C语言数组的定义问题
- C语言const使用
- C语言const使用
- C语言中const的使用
- C语言-const的使用情况
- C语言中const的使用
- yum list
- Java中的流与文件:文本的输入与输出
- 输出二叉树第n个节点
- android studio NDK-JNI调用
- Windows中搭建Android开发环境
- C语言使用const定义数组时的错误原因
- android broadcastReceiver学习
- 条款40:将std::atomic用于并发,而volatile用于专有内存
- 归并排序
- google方程式
- C++之strcpy、memcpy、memmove比较
- nsoj A. Oil Deposits
- 北化oj 2101 - 程序改错 - 两数交换(二)
- iOS传值之代理