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