.已知:int x[ ]={1,3,5,7,9,11},*ptr=x;则能够正确引用数组元素的语句是:

已知:int x[ ]={1,3,5,7,9,11},*ptr=x;则能够正确引用数组元素的语句是:
A x
B *(ptr--)
C x[6]
D *(--ptr)

B,*(--ptr)没办法引用第一个元素。

*(--p)因为p现在指向的是数组的首地址,--p表示先--,那么p将指向数组首地址的前一个,所以这个在执行的时候应该会报错。

若有说明int a[][4]={1,2,3,4,5,6,7,8,9};则数组a第一维是3。

定义数组并赋值时C语言规定下标是这样的,a[n]中的n个元素应该是a[0]....a[n-1]。

因此int a[][4]的写法就是表示,第一维大小没限制,但是第二维数组大小就是4,也就是int a[][4]={{1,2,3,4},{5,6,7,8},{9,10}},明显是3。

扩展资料:

一个数组中的所有元素具有相同的数据类型(在C、C++、Java、pascal中都这样。但也并非所有涉及数组的地方都这样,比如在Visual Foxpro中的数组就并没这样的要求)。当然,当数据类型为 Variant 时,各个元素能够包含不同种类的数据(对象、字符串、数值等等)。可以声明任何基本数据类型的数组,包括用户自定义类型和对象变量。

参考资料来源:百度百科-数组

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-01-20

选择答案B,B表示的是数组的第一个元素的值,也就是x[0]的数值。

选项分析:

A选项,因为数组的变量名为x,所以说直接引用x的话表示的是数组的首地址,所以A不是引用的数组元素。

B选项,因为ptr指针指向x,ptr--先引用x的首地址,然后执行*号表达式,那么就会取出x[0]的值。

C选项,x[6],因为数组一共有6个元素,那么数组的下标为0到5,C选项使用6,会出现数组越界。

D选项,--ptr会先执行减1的操作再引用,所以指针指向了一个不确定的地址,不会是正确引用数组元素。

扩展资料:

指针使用注意事项:

1、不允许把一个数赋予指针变量。

2、改变形参不代表改变实参,不能企图通过改变指针形参的值而使指针实参的值改变。

3、调用函数指针。分析函数指针变量不能进行算术运算,这是与数组指针变量不同的。数组指针变量加减一个整数可使指针移动指向后面或前面的数组元素,而函数指针的移动是毫无意义的。

函数调用中“(*指针变量名)”的两边的括号不可少,其中的“*”不应该理解为求值运算,在此处只是一种表示符号。要把“z=*pomax(x,y);”改成“z=(*pomax)(x,y);”。

数组名是数组的首地址,就是数组中第一个元素的地址,是常量。常量是不能出现在赋值号=左边作为左值的。

本回答被网友采纳
第2个回答  2018-12-24
A.是首地址
B.ptr是数组的首地址,再取内容得到第一个元素
C.x[6]是第七个元素,世界舒服,无法输出。
D.首地址自减这样的地址不存在,没有对应内容
第3个回答  2011-01-08
B,不是没办法引用吧 ,*(--p)因为p现在指向的是数组的首地址,--p表示先--,那么p将指向数组首地址的前一个,那是什么呢当然是空啦,所以这个在执行的时候应该会报错。
第4个回答  2011-01-08
D。不过语句执行完以后 ptr指向的地址的内容就不确定了本回答被网友采纳