若有以下定义: int a[10],*p,x; 语句a=&x;或a++都是非法的。
在c语言中,虽然不可以改变数组名a中的内容,但可以通过对数 组名加一个整数的办法,来依次表达该数组中不同元素的地址。例 如:(假定已定义k为整型变量); for(k=0;k<10;K+通过表达式:a+k,逐一给出了a数 组中每个元素的地址,使p依次指向a数组中的每一个元素。
一维数组元素的引用
一维数组只带有一个下标,它的引用形式如下: 数组名[下标] /*下标可以是表达式*/ 例如:double x[8]; /*定义了一个双精度型数组,有8个元素*/ 则:x[3]或x[i+3]都是合法的引用形式。
数组概念的相关解释: 1、一个数组元素实际上就是一个变量名,代表内存中的一个存储 单元。一个数组占有一串连续的存储单元。 2、在c语言中,一个数组不能整体引用。在c语言中,数组名中存 放的是一个地址常量,它代表整个数组的首地址。 3、在引用数组元素时,数组元素中下标表达式的值必须是整数, 它的下限为0。在编写程序时保证数组下标不越界是十分重要的。
通过数组的首地址引用数组元素
a是a数组元素的首地址,a(即a+0)的值即等于&a[0];则a+1即等 于&a[1]、a+2的值即等于&a[2]、…、a+9的值即等于&a[9]。 我们知道,可以通过间接访问运算符*来引用地址所在的存储单元, 因此对于数组元素a[0],可以用表达式*&a[0]来引用,也可以用*(a+0) 来引用,对此也可以写成:*a;而对于数组元素a[1],可以用表达式 *&a[1]来引用,也可以用*(a+1)来引用,因为a+1即是a[1] 的地址,使 用间接访问运算符可以引用地址所代表的存储单元,因此,*(a+1)就是 a[1];…;对于数组元素a[9],可以用表达式*&a[9]来引用,也可以用*(a+9) 来引用。因此,可以通过以下语句逐个输出a数组元素中的值: for(k=0;k<10;k++) printf(“%4d”,*(a+k)); 此语句相当于: for(k=0;k<10;k++) printf(“%4d”,a[k]);