A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

#include<stdio.h>
int main()
{
        int a=5;
        int b[a];
}

6 个回复

正序浏览
刘元明 来自手机 中级黑马 2014-6-19 17:34:17
7#
数组元素个数不能是变量
回复 使用道具 举报
把前面改成 const int a =5 ,后面就可以了
回复 使用道具 举报
使用不定长数组的特性是C99中新增的,如果你在用VC++6.0编译的话那么肯定会报错。
不定长数组定义要求:如果使用变量作为定义数组的大小值,那么不可以在定义的同时进行初始化。

    int a = 2;
   // int b[a] = {1,2};//这句是错误的

   //-----这样是正确的
     int b[a];
     b[0] = 1;
     b[1] = 2;
回复 使用道具 举报
快速入门那套视频里讲的是不允许这样定义, 但是零基础那套视频里讲的是可以这么定义的. 可能零基础那套视频比较新, 在Xcode中实验一下, 是允许这么定义的.

二者使用上的区别是,
使用常量或者常量表达式(包括宏定义)指定元素个数时, 在定义数组的同时可以对数组进行初始化.
使用变量或变量表达式指定元素个数的数组, 不可以在定义的同时进行初始化, 必须定义后再赋值.
比如,
// 使用常量或常量表达式, 可以在定义同时初始化
int a[3*3] = {1};       // 初始化后, 未被赋值的元素默认赋值为0
// 使用宏定义, 可以定义同时初始化
#define N 5
int a[N] = {1, 2, 3, 4, 5};

// 使用变量或变量表达式指定元素个数时, 不可以在定义时初始化数组
int n = 5;
// int a[n] = {1, 2, 3, 4, 5};     错误!

// 但是可以先定义数组, 再对数组元素进行赋值
int a[n];                     // 可以这样定义
a[0] = 1; a[1] = 2;     // 可以赋值. 注意: 未被赋值的元素是任意值 (不一定是0)

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

回复 使用道具 举报
数组元素个数不能是变量,第一次见这么写的
回复 使用道具 举报
数组元素个数 不允许 是变量。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马