假定a为一个整形数组名,则元素a[4]的字节地址为_______.
一般会是a+4,但字节地址是a+16,字节地址可能是相对一个地址的字节位移量吧,估计可能是一个整型变量占2个字节,a[4]需要从第一个元素的首地址向后移16字节才是a[4]的首地址吧。
a[n]的地址= 起始地址 + n * 4
首先a若表示数组名,则a等价于数组首个元素的地址,即a[0]的地址。数组在内存中是以线性的方式连续存储的,就是a[0]、a[1]、a[2]···这样连续存放。其中一个元素的地址可由首地址加上偏移量计算出,即a[i]的地址 = a[0]的地址 + i * 数组元素类型所占的字节数。所以:
a[4]的字节地址 = a[0]的地址 +4 * 数组元素类型所占的字节数 = a + 4 * 整形类型所占的字节数 = a + 4 * 4 = a + 16
严格来说,此题应给出计算机的字长。16位和32位的计算机结果就不同了。上面的结果是32位的计算机的结果,此时整形类型所占的字节数为4,若是16位的计算机,整形类型所占的字节数为2,则答案应为 a + 4 * 2 = a + 8。
这个要看在哪种系统了,如果是DOS系统,由于DOS系统是16位的,一个整数占2个字节,则a[4]的字节地址为 a+4*2,答案就是B.如果是win XP系统,由于是32位系统,一个整数占4个字节,则a[4]的字节地址为 a*4*4,答案就是C,明白了吧?
看谭浩强教授的《C程序设计》
a是数组,a数组的地址也就是数组中第一个元素的地址为a[0],如果想算a[i]的地址套下面的公式:a[0]+i*d,其中d为该数组类型所占的字节数,Turbo C++中int占二字节,而VC++中是4字节,现在一般不用Tubro C++了,d是4个字节,所以a[4]=a[0]+4*4
呵呵
这个应该看语言这道题是指什么语言
像java的整形是4个字节
这种当然是a+16了
如果是c
那么是a+4
虽然c的整形默认是2个字节
但是这里的a不是地址
而是指针
指针和地址差别在此
a正确
应该是a+4
指针的加减是和指针类型相关的,比如char用1byte,int用4byte,则:
char *p_char;
char v_char;
int *p_int;
int v_int;
如果v_char和v_int的地址都是1,则经过如下运算:
p_char = &v_char;
p_int = &v_int;
p_char++;
p_int++;
后,p_int的值为5,而p_char的值为2
若a是一个整型数组名,那么元素a[4]的字节地址是多少?
a[n]的地址= 起始地址 + n * 4
假定a为一个数组名,则下面存在错误的表达式为的() A. a[i] B.*a十 ...
选择答案B,主要的原因是因为数组变量为数组的首地址,数组的首地址是一个常量不能改变,而B选项对a进行了自增的操作。所以说B是错误的选项。选项分析:A选项,a[i]属于通过下标对数组的元素进行引用,选项A是正确的。C选项,*a通过星号运算符取出数组首地址中的元素,所以说C是正确的的。D选项的操...
...中:什么叫数组的有效元素?,例如:int a[10]={0,1,34,0,0,1,0}...
定义数组时数组名后面的方括号里的数字代表数组所能容纳的最大元素,这里为10,而后面的大括号里的元素个数为7,没有超过数组所能容纳的最大元素个数,所以这里的有效数组元素个数为7个。还有一个就是在引用数组元素时方括号后面的数字代表是元素在数组中的位置,不过一定要记住引用时下标是从零开始的...
定义一个数组int a[3]={1,2,3}; 那么,数组a中的元素是a[0] a[1...
定义一个一维整型数组数组名叫a,数组长度是3,将整数1,2,3存入数组a中;其中a[0]的值是1 ,a[1]的值是2,a[2]的值是3.
C语言的填空题~~~要有详细解释
。6. 设有定义:int *p,x=5; 请写出使指针p指向变量x的赋值语句 p=&x; 。7.设有定义:int a[ ]={1,2,3,4,5,6,7,8}; 则数组元素a[a[1]]的值是 3 又是你。 建议你多看看书, 多体会体会
为什么int a[]是数组而int a[]不是
int a[ ]中,a表示数组名,代表数组的首地址,可以看成一个常量,不可更改。数组的定义形式:元素数据类型 数组名 [ 数组元素个数 ] ;其中:中括号是数组的标识。括号中的数组元素个数在有初始化数据时,可省,按初始化实际数据个数分配数组空间。如: int a[]={1,2,3,4,5}; \/\/a占...
C语言,数组名与数组第一个元素的关系
数组是多个元素的集合,而其第一个元素只是它的一个部分 当我们定义一个数组时,要用到方括号修饰符, 如 int a[10];这也就决定了它的类型为int [10],但其元素的类型却为int 区别:而C中的指针和数组实际上十分类似(但数组的指针为常量),所以当你尝试用整型(若要用printf完整输出应该用“...
a是一个数组,*p=a,a[p]=p[a]
int a[100], *p=a;这种形式 那么 a[i] 和p[i]这两个是相同的。但是 不管是指针 还是数组名, 都不可以写成这样a[p]或者p[a]因为,[]里面, 需要的是一个整型常量或者变量。而一般做为地址,都是很大的数值, a[p]的写法,必然会溢出。PS:虽然不推荐,但是 int a[100],i; i[a]...
若有以下定义,则数组元素a[2][2]的值是( ) int a[][3]={{1,2},{3...
0]={数据1、数据2},a[1]={数据3、数据4}。例如,a[2][2]={1,2,3,4},那么a[0]={1,2},a[1]={3,4}。2、若常量1没有时,会按照常量2的数值来设定一组数据的个数,组数不限。例如,a[][2]={1,2,3,4,5,6},那么a[0]={1,2},a[1]={3,4},a[2]={5,6}。
C语言里数组元素是什么
其中 int 为类型,即整型(还有字符型 char 和float 实型等)a 为数组名 [] 为下标符号,里面的数字常量为 数组的第几号成员元素。例如 a[0]为 数组a[10]的第一号成员元素。这里有点要注意的是,数组元素下标值是从0开始的,即你定义a[10],则他的成员数为a[0]到a[9].千万不要把a[...