|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct stu
{
char *name,gender;
int score;
} STU;
void f(char*p)
{
p=(char *)malloc(10) ;
strcpy(p,"Qian");
}
main()
{
STU a={NULL,'m’', 290} ,b;
a.name=(char *)malloc(10);
strcpy ( a.name,"Zhao");
b = a;
f(b.name);
b.gender = 'f’ ; b.score = 350;
printf("%s,%c, %d,",a. name,a.gender,a.score) ;
printf("%s,%c,%d\n", b.name,b.gender,b.score) ;
}
则程序的输出结果是( )。
A. Zhao,m,290,Qian,f,350
B. Zhao,m, 290, Zhao,f,350
C. Qian,f,350,Qian, f, 350
D. Qian, m,290,Qian,f[逗号 ]350
【您的选择】B 恭喜您答对了!
【题目解析】
本题的考查点是结构体的运用[/code]。本题定义了两个结构体变量a和b,并为a赋予了新值;语句b=a是将结构体变量a的内容赋给了结构体变量b,对于结构体的赋值,意味着将其中的每一个元素都进行赋值,执行f (b.name)时,调用f函数,在f函数体中给p开辟了一个新的空间,在新的空间里的*p=Qian,但对主函数无任何影响,语句又为b中的gender和score元素赋予了新值,b.gender = 'f’; b.score = 350 ; 。故本题答案为B。
我选的A。经过f函数之后不应该被替换了吗
哇,这代码格式
兄弟你想学会C语言吗?把代码写成这样是学不会C语言的
如果不想学会C语言,只是想要通过考试的话那问题就简单了
直接背答案就可以了,你管他什么原理了,背过就能考过,就是这样
f函数这样写是无法修改变量p指向的字符串的
C语言函数调用的参数是值传递,就是把这个变量复制一份然后传递给函数
指针要解引用才能修改调用者传递过来的变量
|
|