c语言数组下标是变量
㈠ c语言中每个变量或者元素都有下标,下标的作用是什么谢谢
C语言中变量或者元素都有下标,是因为表示数组的某个元素,比如a[4],表示数组的第5个元素,数组元素下标是从0开始的。
㈡ c语言中,数组元素可以是变量或表达式吗
数组元素 可以赋值为变量或表达式。
但实际存储的只能是最终运算的值。
比如 赋值
a[0]=1+2;
那么a[0]的值就是3. 无法得知这个3是怎么计算过来的。
㈢ c语言中数组的下标可以是字符吗代表什么意思
C语言数组的下标只能是合法的整型值。
当下标为字符时,有两种可能:
1
以字符常量作为下标。如a['A'];表示'A'的ascii码对应的数组偏移量。在实际应用中不常见,但是从语法上来说是合法的。
2
字符本身为变量。如
int
i;
int
a[100];
for(i
=
0;
i
<
100;
i
++)
printf("%d\n",
a[i]);
这里的a[i],下标就是i,本质上i是一个变量,访问的时候是根据变量值进行访问对应元素的。
㈣ 数组下标用变量
对于ANSI 标准C及C++,这都是标准没有定义的,也就是说,最好认为不可以用变量代入数组个数
C99标准中加入了这个特性,但C99标准还未流行。
对于C++编译器,gcc扩充了这个功能,但是它未被标准支持所以这样的程序是不具备编译可移植性的。早期的vc++6.0不支持此特性。
但是你若在c++中定义const int n = 5;
则可以int a[n];
因为c++中,const型变量是作为编译时常量的。
但在ANSI C中却不行,因为C中const型变量是作为只读的变量出现的,所以不能用其定义数组个数
虽然在汇编的角度看,int a[n];这种语句即使n是变量,也是很好实现的,但c/c++出于多种考虑(例如n的不确定性以及楼上提到的一点原因)拒绝了它
要模拟动态数组,最好使用new,malloc类似函数动态分配内存,这样的程序才是最安全的
-----------------------------------------------------------------
楼主,我看大师Steve Summit的书,他告诉我说去在意不同的编译器之间的对标准的支持程度的不同是没多大意义的。我们只需知道ANSI C/C++两者的标准定义行为,对未定义行为及不确定行为不同的编译器有不同的实现与扩展,也尽量不要去用,尽管某些编译器出于好意扩展了某些行为
-------------------------------------------------------------
这里看到了对宏的讨论。宏是预处理器管的范畴,而非编译器的范畴
要想真正理解以上所有这些,请看大师的书:《C Programming FAQs》与《C++ Primer》,前者对应C,后者对应C++。
单在这里讨论是理解不了的
㈤ C语言数组的下标
c语言中的下标是定义数组a[]和数组b[n],下标是用在数组中的;
a[1]和b[1]就是下标相同的一个元素,数组a[1]中的数满足条件的之后就做移位计算,是减小左移,右移增加;
例:
inta[5]={1,2,3,4,5};
printf(“%d,%d,%d,%d,%d”,a[0],a[1],a[2],a[3],a[4]);//会输出1,2,3,4,5
a[0]=10;
printf(“%d”,a[0]);//输出10;
(5)c语言数组下标是变量扩展阅读
基本的算数运算符
(1)、+加法运算或正值运算符
4+4、+5
(2)、-减法运算或负值运算符
6-4、-10、-29
(3)、乘法运算
注意符号,不是x,而是;
(4)、/除法运算
注意符号,不是÷,也不是,而是/;
整数除于整数,还是整数。1/2的值是0,这个并不是二分之一,不会四舍五入,直接截断取值;
(5)、%取余运算
取余:即两个整数相除之后的余数;
注意:%两侧只能是整数,正负性取决于%左侧的数值;
㈥ C语言问题:定义数组时,下标可不可以是变量
你将这个代码放到编译器里面就知道了..会报错的.!
定义下标后就会分配内存.要是你的下标变大了之后内存放不下了就会出错..
㈦ c语言中,定义数组和引用数组时,其数组的下标的数据类型分别允许是什么
1、C89/C90标准:定义数组时下标只允许使用整型、字符型常量,引用数组时下标可以使用整型、字符型的常量或者变量
2、C99标准:定义数组时下标可以使用整型、字符型的常量或变量,但变量必须已经赋值;引用数组时下标可以使用整型、字符型的常量或者变量。以上所说的常量及变量均包含表达式。
(7)c语言数组下标是变量扩展阅读
1、数组包含给定类型的一些对象,并将这些对象依次存储在连续的内存空间中。每个独立的对象被称为数组的元素(element)。元素的类型可以是任何对象类型,但函数类型或不完整类型不能作为数组元素。
2、在数组定义中,可以将元素数量指定为一个常量表达式,或者在特定情况下,指定为涉及变量的表达式。采用这两种方式定义的数组分别被称为固定长度数组和长度可变数组。
3、固定长度数组可以具有任意存储类别:可以将它们定义在所有函数的外面或语句块的里面,并且可以使用或不使用存储类修饰符 static。唯一的限制是数组不能作为函数参数。一个传入函数的数组参数需要被转换为指向数组第一个元素的指针。
㈧ c语言中用数组能表达下标a吗
不能表示a数组元素的表达式是( B) a[10] )----因为数组a的最大下标只能是9,即a[9],
a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],一共10个元素。
A、*p ---表示取p指针指向的单元的值,即表示取数组a的首个元素a[0]的值。
B、a[10] ---因为数组a一共10个元素,从0开始计数,
即a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],正好10个,没有a[10],所以a[10]就是不能表达这个数组元素。
C、*a ----数组名a中保存的是数组的首地址,*是取单元中的值,*a就是取数组首地址中单元中a[0]的值。
D、a[p-a] --- p指向的是数组a,因为p中与a同数据相同都是数组a的首地址,而p-a就等于0,因此 a[p-a]就相当于a[0]。
(8)c语言数组下标是变量扩展阅读:
数组元素也是一种变量, 其标识方法为数组名后跟一个下标。下标表示了元素在数组中的顺序号。数组元素通常也称为下标变量。必须先定义数组, 才能使用下标变量。在C语言中只能逐个地使用下标变量,而不能一次引用整个数组。
数组元素的一般形式为:
数组名[下标]
其中下标只能为整型常量或整型表达式。如为小数时,C 编译将自动取整。
例如:
a[5]
a[i+j]
a[i++]
都是合法的数组元素。
㈨ c语言中,数组中,数组必须是数组名常量表达式,对于数组中元素的下标,下标能不能是变量如图,书上没
可以的,但是注意这个变量的取值范围——在这个例子里,得确保 i 是0到9的整数,不然会出错。
另外,声明数组不能用变量的原因是,数组一旦声明就确定了(内存安排好了)。下标就可以用变量,调用的时候就显得更方便灵活。