关于省计算机二级考试的一个出题错误

本文分析了一道2007年计算机二级考试中的C语言试题,指出在函数`f`中使用结构体成员作为返回值的问题。由于返回的是局部变量的指针,离开函数作用域后指针将失效,导致程序行为未定义。正确做法应改为通过指针或引用参数传递结构体。
摘要由CSDN通过智能技术生成

2007年春试题6
#include <stdio.h>
struct st{
char c, char s[80];
};
char * f(struct st t);
void main( )         
{  int k;
   struct  st  a[4] =
{ {‘1’,”123”}, {‘2’,”321”},{‘3’,”123”},{ ‘4’,”321”}};
for(k = 0; k < 4; k++)
    printf("%s/n", f(a[k]));
}
char * f(struct st t)
{   int k = 0;
   while(t.s[k]!=’/0’){
        if(t.s[k] == t.c) return t.s+k;
        k++;
    }
return t.s;
    }
 (21) 程序运行时,第1行输出     (21)    。
A、321                          B、21
C、123                          D、12
 (22) 程序运行时,第2行输出     (22)    。
A、21                           B、12
C、3                            D、1
 (23) 程序运行时,第3行输出     (23)    。
A、3                            B、123
C、1                            D、321
 (24) 程序运行时&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值