首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序 #include <stdio.h> int* sum(int data) { static int init = 0; init += data; return &init; } main() { int i
有如下程序 #include <stdio.h> int* sum(int data) { static int init = 0; init += data; return &init; } main() { int i
admin
2021-04-28
41
问题
有如下程序
#include <stdio.h>
int* sum(int data)
{
static int init = 0;
init += data;
return &init;
}
main()
{
int i, *p;
for (i=1; i<=4; i++) sum(i);
p = sum(0);
printf("%d\n", *p);
}
程序运行后的输出结果是
选项
A、15
B、0
C、1
D、10
答案
D
解析
static变量又称为静态变量,编译时,将其分配在内存的静态存储区中,在整个程序运行期间都不释放这些存储单元,即使退出函数,下次再进入该函数时,静态局部变量仍使用原来的存储单元,值是上一次函数调用结束时的值。若定义时未赋初值,在编译时,系统自动赋初值为0;若定义时赋初值,则仅在编译时赋初值一次,程序运行后不再给变量赋初值。程序执行过程为:执行for循环,i=1,调用函数sum(1),data=1,init=0,init=init+data=1;i=2,调用函数sum(2),data=2,init=1,init=init+data=3;i=3,调用函数sum(3),data=3,init=3,init=init+data=6;i=4,调用函数sum(4),data=4,init=6,init=init+data=10;i=5退出for循环。调用函数sum(0),data=0,init=10,init=init+data=10,返回指向init的指针,输出init=10。D选项正确。
转载请注明原文地址:https://kaotiyun.com/show/DFtp777K
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
以下叙述中正确的是
设p是指针变量,语句p=NULL;等价于
若有以下程序#include<stdio.h>main(){inti,j=0;chara[]="Howareyou!",b[10];for(i=0;a[i];i++)if(a[i]==’’)b[j++]=a[
有三个关系R、S和T如下,则关系T由关系R和S通过()得到。
以下叙述中正确的是
设循环队列的存储空间为Q(1:m),初始状态为空。现经过一系列正常的人队与退队操作后,front=m,rear=m-1,此后从该循环队列中删除一个元素,则队列中的元素个数为()。
有以下结构体说明、变量定义和赋值语句structSTD{charname[10];intage;charsex;}s[5],*ps;ps=&s[0];则以下scanf函数调用语句有错误的是()。
合法的C语言数值常量是()。
以下选项中不能作为C语言合法常量的是
对长度为n的线性表作快速排序,在最坏情况下,比较次数为
随机试题
细菌性食物中毒是指因摄入被致病菌及其毒素所污染的食物而引起的急性中毒。()
女,44岁。左乳房外上象限4cm×3cm肿块,距乳头距离5cm,可推动,但是患者双手叉腰时肿块活动度明显受限,左腋窝未扪及肿大淋巴结。该患者若确诊为乳腺癌,最佳的手术方式是
评价心脏泵血功能的指标有()。
对于外商投资项目,实行()
【2003年第42题】以下等截面连续梁的各荷载布置图中,哪个能使AB跨中出现最大正弯矩?
在财产保险合同中,保险人向被保险人赔偿保险金后,被保险人未经保险人同意放弃对第三者请求赔偿权利的,该行为无效。()
2014年中央一号文件指出,推进中国特色农业现代化,要始终把改革作为根本动力,立足国情农情,顺应时代要求,坚持()为基础与多种经营形式共同发展。
行政反馈是()。
通常认为左撇子比右撇子更容易出事故。这是一种误解。事实上,大多数家务事故,大到火灾、烫伤,小到切破手指,都出自右撇子。以上哪项最为恰当地概括了上述论证中的漏洞?
Freemedicaltreatmentinthiscountrycoverssicknessofmindaswellas______sickness.
最新回复
(
0
)