问题 单项选择题

以下程序的输出结果是( )。
#include <stdio.h>
void swap(int*a, int *b)
int*t;
t=a; a=b; b=t;

main()
int i=3, j=5, *p=&i, *q=&j;
swap(p, q); printf(1%d %d\n, *p, *q);

A) 23
B) 34
C) 35
D) 45

答案

参考答案:C

解析: 本题主要考查的是函数参数的传递。在C语言中,函数参数的传递是“传值”的,即复制一份实参给形参,形参和实参是完全没有关系的两个变量。所以在函数内部改变形参变量,并不会影响到函数外部的实参。要实现“传址”调用,必须通过指针。因为将实参指针内容复制给了形参指针后,两个指针变量虽然没有任何关系,但它们指向的却是同一个内存地址,当改变形参指针所指向的那个内存地址的内容时,实参指针所指向的内容也就同时被改变了,从而实现了“传址”调用。但是,并不是说只要函数参数是指针,那肯定就是“传址”调用。故选择C)。

单项选择题 A2型题
单项选择题