单选题
1、第89题 (1.0分) 题号:665 以下正确的说法是:在C语言中()。
A
实参和与其对应的形参各占用独立的存储单元
B
实参和与其对应的形参共占用一个存储单元
C
只有当实参和与其对应的形参同名时才共占用存储单元
D
形参是虚拟的,不占用存储单元
答案解析
正确答案:A
解析:
**解析:**
在 C 语言中,函数调用时的参数传递机制主要遵循以下原则:
1. **值传递(Pass by Value)**:
C 语言中,除非使用指针或数组名(退化为指针),否则实参向形参传递数据时采用的是“值传递”方式。这意味着系统会将实参的值**复制**一份给形参。
2. **存储单元的独立性**:
* **形参**:是函数定义中声明的局部变量。当函数被调用时,系统会在栈区为形参分配独立的内存空间,并将实参的值拷贝到这块空间中。
* **实参**:可以是常量、变量或表达式,它们在调用前已经存在并占用各自的存储单元。
* 因此,**实参和形参分别占用不同的、独立的存储单元**。在函数内部对形参的修改不会影响实参的值(除非通过指针间接修改)。
3. **选项分析**:
* **A 正确**:实参和形参各自拥有独立的内存地址,互不干扰。
* **B 错误**:如果共用一个存储单元,那么修改形参就会直接修改实参,这不符合 C 语言值传递的特性(引用传递或指针传递才涉及地址关联,但即使是指针,指针变量本身也是独立存储的)。
* **C 错误**:是否占用独立存储单元与变量名是否相同无关。即使同名,它们也是不同作用域下的不同变量(一个是调用者的局部变量或全局变量,另一个是被调函数的局部变量)。
* **D 错误**:形参虽然是形式上的参数,但在函数执行期间,它是真实的局部变量,必须占用存储单元来保存传入的值。
**结论:**
正确答案是 **A**。
题目纠错
c语言选择判断题库
相关题目
单选题
1、第170题 (1.0分) 题号:644 以下对一维整型数组a的正确说明是()。
单选题
1、第169题 (1.0分) 题号:744 当说明一个结构体变量时系统分配给它的内存是()。
单选题
1、第168题 (1.0分) 题号:490 以下字符中不是转义字符的是()。
单选题
1、第167题 (1.0分) 题号:510 int a=3,b=2,c=1; if( )a=b; else a=c; 则a的值为()。
单选题
1、第166题 (1.0分) 题号:652 在C语言中,引用数组元素时,其数组下标的数据类型允许是()。
单选题
1、第165题 (1.0分) 题号:176 数组名作为实参数传递给函数时,数组名被处理为()。
单选题
1、第164题 (1.0分) 题号:631 结构化程序设计所规定的三种基本控制结构是()。
单选题
1、第163题 (1.0分) 题号:712 若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是()。
单选题
1、第162题 (1.0分) 题号:687 表达式,0x13&0x17的值是()。
单选题
1、第161题 (1.0分) 题号:113 执行下列语句后变量x和y的值是()。 y=10;x=y++;
