(1)int n=10; int a[n]; (2) void func(int n) { int a[n]; } 为什么这么做可以?
答案:2 悬赏:0 手机版
解决时间 2021-03-27 03:50
- 提问者网友:骑士
- 2021-03-26 23:29
(1)int n=10; int a[n]; (2) void func(int n) { int a[n]; } 为什么这么做可以?
最佳答案
- 五星知识达人网友:酒安江南
- 2021-03-27 00:15
初始化数组需要指定长度
(1)中a[n]的n已经定义为10,所以a的长度为10
(2)中a[n]的长度n由函数func的传入参数n获得.使用的时候比如,func(10),此时a的长度就是10,如果func(20),a的长度就是20.追问参考《C++primer中文第四版》96页:
const unsigned buf_size=512, max_files=20;
int staff_size=27;
...
double salaries[staff_size]; // error: non const variable
double data[buf_size]; //ok: const variable
在这里,说明只能用const变量来定义数组的维数。
按照这种说法,我上面的a[n]定义就都是非法的了,奈何程序可以正常编译运行呢?追答const修饰的变量在程序中无法修改.
定义数组的时候;
double salaries[staff_size]; 相当于double salaries[27];
double data[buf_size]; 相当于double data[512];
他可能意思是const必须事先赋值,所以在定义数组时不会出错,但是非const变量初始化的时候可以不赋值,可能会造成错误.
(1)中a[n]的n已经定义为10,所以a的长度为10
(2)中a[n]的长度n由函数func的传入参数n获得.使用的时候比如,func(10),此时a的长度就是10,如果func(20),a的长度就是20.追问参考《C++primer中文第四版》96页:
const unsigned buf_size=512, max_files=20;
int staff_size=27;
...
double salaries[staff_size]; // error: non const variable
double data[buf_size]; //ok: const variable
在这里,说明只能用const变量来定义数组的维数。
按照这种说法,我上面的a[n]定义就都是非法的了,奈何程序可以正常编译运行呢?追答const修饰的变量在程序中无法修改.
定义数组的时候;
double salaries[staff_size]; 相当于double salaries[27];
double data[buf_size]; 相当于double data[512];
他可能意思是const必须事先赋值,所以在定义数组时不会出错,但是非const变量初始化的时候可以不赋值,可能会造成错误.
全部回答
- 1楼网友:七十二街
- 2021-03-27 00:29
怎么做?说具体点?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯