有以下程序:
#include <stdio.h>
#include <strine.h>
struct STU
char name[10];
int hum;
;
void f(char * name,iht num)
struct STU s[2] = "SunDan" ,20044 , " Penghua" ,20045;
num= s[0]. nnm;
strepy(name,s[0], name);main( )
struct STU s[2] = "YangSan" ,20041 , "LiSiGao" ,20042, * P;
p = &s[1]; f(p->name,p->hum);
printf("% s %d \n" ,p-> name,p->num);程序运行后的输出结果是( )。
A.SunDan 20042
B.SunDan 20044
C.LiSiGuo 20042
D.YangSan 20041
参考答案:A
解析: main函数中将定义的结构体类型指针变量p指向结构体类型数组s[1],通过调用函数f改变了指针变量p所指向的结构体中成员变量name的值,但并未改变其num的值。这是因为函数f中的形参name是一个字符型指针变量,它指向了main函数中指针变量p所指向的结构体的成员变量name,所以对函数f中的形参*name的改变也就对main函数中p->name的改变,而函数f中对形参num的改变不会影响main函数中p-?num的值,因为此时传递给 num的是一个值,而不是地址。