C语言中一维数组正确的定义
A int a(5);
B int n=5,a[n]
C int a[SZ] 其中SZ为符号常量
我知道数组名后面[]中的常量表达式可以是常量或符号常量,符号常量是什么概念呢?
请问B和C哪个对呢? 展开
符号常量是用一个标识符来表示一个常量,一维数组的定义方法为:类型说明符+数组名+[常量表达式];
类型说明符是任一种基本数据类型或构造数据类型。数组名是用户定义的数组标识符。方括号中的常量表达式表示数组元素的个数或者长度,可以是常量或符号常量,不能为变量。
例如:
1、int x[8]; 表示定义一个整型数组x,数组长度为8.
2、float a[8],b[10];表示定义一个实型数组b,数组长度为8,一个实型数组c,数组长度为10
3、 ch[15]; 表示定义一个字符数组ch,数组长度为15。
扩展资料
在程序中可以使用下标变量,即说明这些变量的整体为数组,数组中的每个变量的数据类型是相同的。当数组中每个元素都只带有一个下标时,称这样的数组为一维数组。
一维数组是由数字组成的以单纯的排序结构排列的结构单一的数组。一维数组是计算机程序中最基本的数组。二维及多维数组可以看作是一维数组的多次叠加产生的。
数组是计算机编程中的重要概念,运用数组可以方便地处理大规模的数据。
参考资料:百度百科-一维数组
2024-07-18 广告
在C语言中使用数组必须先进行定义。一维数组的定义方式为:
类型说明符 数组名 [常量表达式];
其中,类型说明符是任一种基本数据类型或构造数据类型。数组名是用户定义的数组标识符。方括号中的常量表达式表示数据元素的个数,也称为数组的长度。例如:
1、int a[10]; /* 说明整型数组a,有10个元素 */
2、float b[10], c[20]; /* 说明实型数组b,有10个元素,实型数组c,有20个元素 */
3、 ch[20]; /* 说明字符数组ch,有20个元素 */
扩展资料:
通过给出的数组名称和这个元素在数组中的位置编号(即下标),程序可以引用数组中的任意一个元素。
在C++中,一维数组的引用格式为:数组名[下标]
例如: int a[10];
其中,a是一维数组的数组名,该数组有10个元素,依次表示为a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]。
需要注意的是,a[10]不属于这一个数组的空间范围中。当在说明部分定义了一个数组变量后,编译程序会在内存空间中开辟一串连续的存储单元。
对于数组而言,程序的执行部分使用的是数组变量而不是数组类型。需要注意的是:在引用时,下标可以是整型变量或整型表达式。
如果使用表达式,会先计算表达式以确定下标。程序只能逐个应用数组中的元素而不能一次引用整个数组。如:
int a[100],b[100]; a=b;
参考资料:百度百科——一维数组
符号常量的概念是:在程序运行过程中,其值不能被改变的量称为常量.用一个标示符代表一个常量的符号,称为符号常量
符号常量在使用之前必须先定义,其一般形式为:#define 标识符 常量
其中define是一条预处理命令,被叫做宏定义命令,功能是把这个标识符定义为常量值。经过定义之后程序中所有出现这个标识符的地方都用这个常量值代替。
扩展材料:
另一层含义指它们的编码方法是不变的(但是严格来说‘人为规定的某一种方法也可以因地制宜而人为改变,所以其本身数值大小‘不是‘常量’的内涵’),比如字符'A'无论在硬件、软件还是各种编程语言中,它的信息编码即为 ‘ 0x41’。
在除了‘C/C++’的一些高级程序语言中,‘常量’可以被称作,“在一个信息变化过程中,始终不发生改变的量”,其可以是不随着时间变化的某些量的固定信息;也可以表示为某一数值的字符(或字符串),常被用来标识、测量和比较两者的差异。
但在 ‘C/C++语言中’,‘常量’如果还用‘运行过程中不变的量’来描述,就显得不太准确了,甚至是在具体使用时,这就是一个错误的概念。在 ‘C/C++’中,定义‘指针常量’时,根据‘const ’的位置的不同,可以定义出几个不同的形式,虽然其看起来‘符合常量的概念’,但是在实际运行中,其值或地址值是会发生变化的。所以本质还不是‘常量概念’
形式为 :const type name = value;
例如:const int MONTHS = 12;
这样就可以在程序中使用MONTHS而不是12了。常量(如MONTHS)被初始化后,其值就被固定了,编译器将不允许再修改该常量的值。假如您这样做:
MONTHS = 18;
是不对的,就好像您将值4赋给值3一样,无法通过编译。
此外注意应在声明中对const进行初始化。下面的代码是不正确的:
const int toes;// toes的值此时是不确定的
toes=10;//这时进行赋值就太晚了
参考资料来源:百度百科——符号常量
符号常量是用一个标识符来表示一个常量,一维数组的定义方法为:
类型说明符+数组名+[常量表达式];
类型说明符是任一种基本数据类型或构造数据类型。数组名是用户定义的数组标识符。方括号中的常量表达式表示数组元素的个数或者长度,可以是常量或符号常量,不能为变量。
例:
1、int x[8]; 表示定义一个整型数组x,数组长度为8.
2、float a[8],b[10];表示定义一个实型数组b,数组长度为8,一个实型数组c,数组长度为10
3、 ch[15]; 表示定义一个字符数组ch,数组长度为15。
扩展资料
一维数组的定义又可分为固定长度数组和长度可变数组两种,定义方法为:
1、固定长度数组
固定长度数组可以具有任意存储类别:可以将它们定义在所有函数的外面或语句块的里面,并且可以使用或不使用存储类修饰符 static。唯一的限制是数组不能作为函数参数。一个传入函数的数组参数需要被转换为指向数组第一个元素的指针。如:
int a[10];// a有外部链接
static int b[10];// b有静态存储周期和文件作用域
void func()
{static int c[10];// c有静态存储周期和块作用域
int d[10];// d有动态存储周期
/* ... */}
2、长度可变数组
如果一个数组具有动态存储周期(也就是说,如果在语句块内定义数组,并且没有 static 修饰符),那么 C99 也允许把非常量表达式作为元素数量来定义该数组。这样的数组被称为长度可变数组(variable-length array)。
注意:长度可变数组的名称必须是普通的标识符。长度可变数组不能作为结构或联合的成员。
例:void func( int n )
{int vla[2*n]; // 合法:存储周期为动态的
static int e[n];// 非法:长度可变数组不可有静态存储周期
struct S { int f[n]; };// 非法:f不是一个普通标识符
/* ... */}
参考资料来源:百度百科——一维数组
这道题正确的答案是:C选项。
A. int a (5);
错误,因为不能用(),()一般函数,以及(*int)强制转换类型。
B. int n=5, a[ n ];
错误,因为不能是变量。
C.int a[SZ];
正确,SZ为符号常量,如被定义是:#define SZ 10,这就是int a[SZ];
符号常量的解释:
1、符号常量是:在C语言中,可以用一个标识符来表示一个常量,称之为符号常量。
2、符号常量在使用之前必须先#define定义(如代码1),一般使用const来指明(如代码2)。
代码实例1:#define MAX_SIZE 256;
代码实例2:const int MAX_SIZE =256;
3、#define 也是一条预处理命令(预处理命令都以"#"开头),称为宏定义命令,通过预处理器来替换符号常量,其功能是把该标识符定义为其后的常量值。
一经定义,以后在程序中所有出现该标识符的地方均代之以该常量值。习惯上符号常量的标识符用大写字母,变量标识符用小写字母,以示区别。
4、符号常量虽然有名字,但它不是变量。它的值在其作用域内是不能改变的,也不能被赋值。
5、使用符号常量的好处是:1、含义清楚。2、在需要改变一个常量时能做到“一改全改”。
参考资料:百度百科-符号常量