有以下程序:#include <stdio.h>#include <strine.h> struct STU { char name[10]; int hum;};void f(char * name,iht num){ struct STU

admin2009-01-15  11

问题 有以下程序:#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

答案1

解析 main函数中将定义的结构体类型指针变量p指向结构体类型数组s[1],通过调用函数f改变了指针变量p所指向的结构体中成员变量name的值,但并未改变其num的值。这是因为函数f中的形参name是一个字符型指针变量,它指向了main函数中指针变量p所指向的结构体的成员变量name,所以对函数f中的形参*name的改变也就对main函数中p->name的改变,而函数f中对形参num的改变不会影响main函数中p-?num的值,因为此时传递给 num的是一个值,而不是地址。
转载请注明原文地址:https://jikaoti.com/ti/YkK0FFFM
0

最新回复(0)