为什么用const说明的常量不能用来定义一个数组的初始大小?
答案:2 悬赏:0 手机版
解决时间 2021-02-27 02:05
- 提问者网友:自食苦果
- 2021-02-26 21:15
为什么用const说明的常量不能用来定义一个数组的初始大小?
最佳答案
- 五星知识达人网友:胯下狙击手
- 2021-02-26 22:35
并不是所有的常量都可以用来定义一个数组的初始大小,在C程序中,只有C语言的常量表达式才能用来定义一个数组的初始大小。然而,在C++中,情况有所不同。
一个常量表达式的值在程序运行期间是不变的,并且是编译程序能计算出来的一个值。在定义数组的大小时,你必须使用常量表达式,例如,你可以使用数字:
char a[512];
或者使用一个预定义的常量标识符:
#define MAX 512
char a[MAX];
或者使用一个sizeof表达式:
char a[sizeof(structcacheObject)];
或者使用一个由常量表达式组成的表达式:
char buf[sizeof(struct cacheObject) *MAX];
或者使用枚举常量。
在C中,一个初始化了的constint变量并不是一个常量表达式:
int max=512;
然而,在C++中,用const int变量定义数组的大小是完全合法的,并且是C++所推荐的。
一个常量表达式的值在程序运行期间是不变的,并且是编译程序能计算出来的一个值。在定义数组的大小时,你必须使用常量表达式,例如,你可以使用数字:
char a[512];
或者使用一个预定义的常量标识符:
#define MAX 512
char a[MAX];
或者使用一个sizeof表达式:
char a[sizeof(structcacheObject)];
或者使用一个由常量表达式组成的表达式:
char buf[sizeof(struct cacheObject) *MAX];
或者使用枚举常量。
在C中,一个初始化了的constint变量并不是一个常量表达式:
int max=512;
然而,在C++中,用const int变量定义数组的大小是完全合法的,并且是C++所推荐的。
全部回答
- 1楼网友:一袍清酒付
- 2021-02-27 00:09
并不是所有的常量都可以用来定义一个数组的初始大小,在c程序中,只有c语言的常量表达式才能用来定义一个数组的初始大小。然而,在c++中,情况有所不同。
一个常量表达式的值在程序运行期间是不变的,并且是编译程序能计算出来的一个值。在定义数组的大小时,你必须使用常量表达式,例如,你可以使用数字:
char a[512];
或者使用一个预定义的常量标识符:
#define max 512
char a[max];
或者使用一个sizeof表达式:
char a[sizeof(structcacheobject)];
或者使用一个由常量表达式组成的表达式:
char buf[sizeof(struct cacheobject) *max];
或者使用枚举常量。
在c中,一个初始化了的constint变量并不是一个常量表达式:
int max=512;
char buffer[max];
然而,在c++中,用const int变量定义数组的大小是完全合法的,并且是c++所推荐的。尽管这会增加c++编译程序的负担(即跟踪const int变量的值),而c编译程序没有这种负担,但这也使c++程序摆脱了对c预处理程序的依赖。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯