单选题
3.数组名作为实参数传递给函数时,数组名被处理为()。
A
该数组的长度
B
该数组的元素个数
C
该数组的首地址
D
该数组中各元素的值
答案解析
正确答案:C
解析:
在 C/C++ 等编程语言中,当数组名作为实参传递给函数时,它并不会像普通变量那样进行“值传递”(即复制整个数组的内容)。相反,数组名在表达式中通常会被隐式转换(退化)为指向该数组第一个元素的指针。
具体来说:
1. **内存机制**:数组在内存中是连续存储的。为了效率考虑,传递整个数组的副本会消耗大量的时间和空间,尤其是当数组很大时。因此,语言设计者规定传递数组名时,实际上传递的是数组在内存中的起始位置,即**首地址**。
2. **指针特性**:在函数内部,接收到的参数本质上是一个指针。通过这个首地址,函数可以访问和修改原数组中的元素,这也是为什么在函数中对数组元素的修改会影响主调函数中的原数组。
3. **选项分析**:
* A、B:数组的长度或元素个数并不是通过数组名直接传递的信息。在函数内部,通常无法直接通过数组名获取数组长度,需要额外传递一个表示长度的参数。
* D:如果传递各元素的值,意味着要复制所有数据,这不符合数组传参的机制。
* C:数组名代表数组的首地址,这是正确的描述。
因此,数组名作为实参传递时,被处理为该数组的首地址。
故正确答案为:**C**
题目纠错
c语言选择判断题库
相关题目
单选题
1、下面四个选项中,均是不合法的浮点数的选项是()。
单选题
1、下列语句的输出结果是()。
单选题
1、执行下列语句后,a和b的值分别为()。 int a,b; a=1+'a'; b=2+7%-4-'A';
单选题
1、以下数据中,不正确的数值或字符常量是()。
单选题
1、以下能对二维数组a进行正确初始化的语句是()。
单选题
1、下列程序的输出为()。 main() 
单选题
1、假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};, 则数组x在内存中所占字节数是()。
单选题
1、下列字符序列中,不可用作C语言标识符的是()。
单选题
1、若有说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是()。
单选题
1、已知字母a的ASCII十进制代码为97,则执行下列语句后的输出结果为()。char a='a'; a--; printf(”%d,%c\n”,a+'2'-'0',a+'3'-'0');
