关于c语言数组的方括号中能不能使用变量的问题。
发布网友
发布时间:2022-04-29 09:12
我来回答
共5个回答
热心网友
时间:2022-06-25 07:13
方括号里必须是一个大于零的整数常量或者常量表达式。
常量表达式(const experssion):是指值不会改变 并且在编译过程就能得到计算结果的表达式。字面量属于常量表达式,用常量表达式初始化的const对象也是常量表达式。
一个对象(或表达式)是不是常量表达式由它的数据类型和初始值共同决定。
const int a =1;//常量表达式
cosnt int b=a+1;//常量表达式
int c=2;//初始值是字面值常量,当c数据类型是普通int。
扩展资料:
1.数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。
2.可以只给部分元素赋初值。当{ }中值的个数少于元素个数时,只给前面部分元素赋值。例如:static int a[10]={0,1,2,3,4};表示只给a[0]~a[4]5个元素赋值,而后5个元素自动赋0值。
3.只能给元素逐个赋值,不能给数组整体赋值。例如给十个元素全部赋1值,只能写为:static int a[10]={1,1,1,1,1,1,1,1,1,1};而不能写为:static int a[10]=1;(请注意:在C、C#语言中是这样,但并非在所有涉及数组的地方都这样,数据库是从1开始。)
4.若不给可初始化的数组赋初值,则全部元素均为0值。
参考资料:
百度百科-数组
热心网友
时间:2022-06-25 07:14
方括号里必须是一个大于零的整数常量或者常量表达式。
常量表达式(const experssion):是指值不会改变 并且在编译过程就能得到计算结果的表达式。字面量属于常量表达式,用常量表达式初始化的const对象也是常量表达式。
一个对象(或表达式)是不是常量表达式由它的数据类型和初始值共同决定。
const int a =1; //常量表达式
cosnt int b=a+1; //常量表达式
int c=2; //初始值是字面值常量,当c数据类型是普通int。
扩展资料:
数组的方括号[]有以下使用情况:
1、定义
当用于定义时,数组方括号[]中的是数组含有的元素个数,即定义了数组的规模,这种情况下,按照ANSI C的标准,是不可以用变量的。
2、取值
当取数组a的第n个元素值时,可以使用a[n]的方式。
这种取值操作的情况下,是可以使用变量的,不过其中的变量只能为整型系列的类型,比如char, short, int, long等,或者对应的无符号类型。
参考资料来源:百度百科-数组
热心网友
时间:2022-06-25 07:14
数组的方括号[]有两种使用情况。
1 定义。
当用于定义时,数组方括号[]中的是数组含有的元素个数,即定义了数组的规模。
这种情况下,按照ANSI C的标准,是不可以用变量的。
不过目前有些编译器支持了C99及以上规范,在C99下,C语言数组定义时可以使用变量。
至于编译器是否支持,定义一个以变量为规模的数组,编译一下,如果能通过,那么就是支持的,反之则是不支持。
由于并不是所有编译器支持,这样的代码就不易于移植,所以不推荐使用这种写法。如果一定需要用动态值,可以采用动态数组的方式。
2 取值。
当取数组a的第n个元素值时,可以使用a[n]的方式。
这种取值操作的情况下,是可以使用变量的。对此,任意版本的C语言都没有做*。
不过其中的变量只能为整型系列的类型,比如char, short, int, long等,或者对应的无符号类型。
热心网友
时间:2022-06-25 07:15
int a[n],是在定义一个数组,而数组的长度为n,n是一个变量,这在c语言是不允许,c语言不支持定义变长数组,因为在编译的时候,系统无法知道数组的长度是多少,也就无法为这个数组分配一个空间。
解决的方法有:
1、
#define N 5
int main()
{
int a[N];
...
return 0;
}
2、
#include<stdlib.h>
int main()
{
int n,*a;
n=5;
a=(int *) malloc(sizeof(int)*n);//动态申请一段空间,但是需要自己管理,就是说在程序结束前
//把这段内存释放掉,否则这段内存就无法被操作系统使用,就会变为垃圾,而且无法清除
...
free(a);//释放a所指的内存空间
return 0;
}
热心网友
时间:2022-06-25 07:15
其实C语言的较新版本标准是支持
int n=5;
int a[n];
的用法的,只是VC一直只支持旧版本的标准而已……
不过对于这个问题,原因不是这个。int a[n];是对象声明,a[i++]=i;是表达式中的运算,二者是完全不同的东西……
关于c语言数组的方括号中能不能使用变量的问题。
方括号里必须是一个大于零的整数常量或者常量表达式。常量表达式(const experssion):是指值不会改变 并且在编译过程就能得到计算结果的表达式。字面量属于常量表达式,用常量表达式初始化的const对象也是常量表达式。一个对象(或表达式)是不是常量表达式由它的数据类型和初始值共同决定。const int a =1;...
关于c语言数组的方括号中能不能使用变量的问题。
方括号里必须是一个大于零的整数常量或者常量表达式。常量表达式(const experssion):是指值不会改变 并且在编译过程就能得到计算结果的表达式。字面量属于常量表达式,用常量表达式初始化的const对象也是常量表达式。一个对象(或表达式)是不是常量表达式由它的数据类型和初始值共同决定。const int a =1;...
方括号是什么意思c语言
除了用于表示数组下标和指针解引用操作外,方括号在C语言中还有其他用途。可以在方括号内部使用表达式或变量,以达到动态计算下标的效果。这在使用二维数组时非常方便。例如,可以使用a[i][j]来访问一个双重循环数组中的元素,其中i和j是循环变量,每次迭代时动态计算下标。此外,方括号还可以用于声明函数...
C语言中如何定义数组
是合法的。但是下述说明方式是错误的。6) 允许在同一个类型说明中,说明多个数组和多个变量。例如:
C语言中数组长度不能用变量定义吗?
C语言里,所有变量空间都是在程序运行之初向系统申请的,包括指针,除了一些动态申请方式如malloc函数。没有申请的空间系统是不允许读写的。那么如果一个数组大小是变量定义,则在程序运行前不能确定数组大小,也就无法申请,故不允许。所以,解决的办法便是通过malloc函数,即 int a[n];可改为 int* ...
c语言数组名后面那个中括号[ ]里可不可以是表达式?为什么
“[]”中间必须是整形常量或整形常量表达式。数组定义时,必须指定数组的大小,数组大小必须是整形常量表达式,不能是变量或者变量表达式 错误例子:int n=10; int a[n]; int b[10.3]; int c[n+10];
冒泡排序 error C2057: 应输入常量表达式
在C语言中使用数组必须先进行定义。一维数组的定义方式为:类型说明符 数组名 [常量表达式];其中,类型说明符是任一种基本数据类型或构造数据类型。数组名是用户定义的数组标识符。方括号中的常量表达式表示数据元素的个数,也称为数组的长度。注意:不能在方括号中用变量来表示元素的个数,但是可以是...
C语言中一维数组正确的定义
可以是常量或符号常量,不能为变量。例如:1、int x[8]; 表示定义一个整型数组x,数组长度为8.2、float a[8],b[10];表示定义一个实型数组b,数组长度为8,一个实型数组c,数组长度为10 3、 ch[15]; 表示定义一个字符数组ch,数组长度为15。
C语言问题(在线等)
5.不能在方括号中用变量来表示元素的个数, 但是可以是符号常数或常量表达式。例如:define FD 5 void main(){ int a[3 2],b[7 FD];……} 是合法的。但是下述说明方式是错误的。void main(){ int n=5;int a[n];……} 6.允许在同一个类型说明中,说明多个数组和多个变量。例如: int...
c语言中定义数组大括号内必须要有数字吗 还有这个例题对吗
定义数组时大括号内,是可以没有数字的。你的问题,从错误的是定义时紧跟在变量名a后面的第一个括号。