若有以下定义和语句:
int a[10]={1,2,3,4,5,6,7,8,9,10},p=a;
则不能表示a数组元素的表达式是( )
A) *p B) a[10] C)*a D) a[p-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]。
扩展资料:
数组元素也是一种变量, 其标识方法为数组名后跟一个下标。下标表示了元素在数组中的顺序号。数组元素通常也称为下标变量。必须先定义数组, 才能使用下标变量。在C语言中只能逐个地使用下标变量,而不能一次引用整个数组。
数组元素的一般形式为:
数组名[下标]
其中下标只能为整型常量或整型表达式。如为小数时,C 编译将自动取整。
例如:
a[5]
a[i+j]
a[i++]
都是合法的数组元素。
参考资料来源:百度百科-数组元素
那A ,B,C 分别是什么意思啊
追答A. *p ---表示取p指针指向的单元的值,即表示取数组a的首个元素a[0]的值
C. *a ----数组名a中保存的是数组的首地址,*是取单元中的值,*a就是取数组首地址中单元中a[0]的值
D. a[p-a] --- p指向的是数组a,因为p中与a同数据相同都是数组a的首地址, 而p-a就等于0,因此 a[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]就是不能表达这个数组元素的啦
那A ,B,C 分别是什么意思啊
...int a[10]={1,2,3,4,5,6,7,8,9,10},p=a; 则不能表示a数组元素的表 ...
即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...
若有以下说明:int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则对数组元素地 ...
此题正确答案 是 D a+1,其实 是 数组元素 a[1] 的地址,a[0] 的地址就是 a+0 就是 a
若有以下定义,“int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a”,则值为6...
B表示元素a[6],即7;C是一个表达式;D表示a[5]的地址,不是元素。
...{ int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p-2; printf...
①*p=&a[3],所以*p=4(这个不解释了)②A我们明确一个概念,就是a[10]这串位置是连续的。B假设i=*p(i为p所指的单元格的值)。*p=4,即i=&a[3]=4 Cp-2即p所在的地址往前推2单元格;即i所指的值往前推2单元格,即i=&a[3]往前推2单元格,即&a[1]=2 综上所述4+2=6 ...
若有int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则输出结果不为5的语句
答案:D 对于数组a[10],a就是该数组的首地址,定义指针p赋值为a,那么a和p的操作基本相同:a[5]=p[5]=*(a+5)=*(p+5),对于D选项,p[5]是个int值,再取*就不对了。
有定义:int a[10]={1,2,3,4,5,6,7,8,9,10};int *p=a;叙述该
有10个元素,并初始化 int *p=a;\/\/定义了一个指向int类型的指针,并使该指针指向数组a的第一个元素 a是a[0],值是1 (a+2)是a[2],值是3 p[3]是a[3] 值是4 (p+5)是a[5],值是6 如果p=p+4,那么p就是指向a[4]了,p[0]就是a[4],值就是5 ...
有如下程序 int a[10]={1,2,3,4,5,6,7,8,9,10},*P=a; 则数值为9的表达 ...
B. *(P+8)因为P为指向a[0]的指针,P+8即为a[8]
数组定义如下:int a[10]={1,2,3,4,5,6,7,8,9,0};请输出数组a的首址和...
它的地址当然就是这个数组的首地址了,所以数组a的首地址和a[0]的地址相等。代码如下:include <stdio.h> int main(){ int a[10]={1,2,3,4,5,6,7,8,9,0};printf("数组a的首地址为\\t%d\\n",a);printf("a[0]的地址为\\t%d\\n",&a[0]);return 0;} 运行结果为:...
已有定义int a[10]={1,2,3,4,5,6,7,8,9,10} 要求通过指针完成从一维数组...
int a[10]={1,2,3,4,5,6,7,8,9,10}; int i,k,n=10,*p=a; printf("input k="); scanf("%d",&k); for(i=k-1;i<n;i++) *(p+i)=*(p+i+1); n--; printf("After delete:\\n"); for(i=0;i<n;i++) printf("%d ",a[i]); printf("\\n"); } 已赞过 已踩过< ...
main() { int a[10]={1,2,3,4,5,6,7,8,9,10}, *p=a; printf(〃%d\\n...
(p+2)就是先把P指向的地址后移两个单位,P初始化指向a数组首地址,后移两个单位后即 a[2]= 3 ;