首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下关于C语言及C代码的叙述。 [说明] 在开发某嵌入式系统时,设计人员根据系统要求,分别编写了如下三部分程序,其中: [C代码1]是李工为了在嵌入式平台上开发一段可变参数函数,在X86平台上实现的一个参数个数可变函数实例。 [
阅读以下关于C语言及C代码的叙述。 [说明] 在开发某嵌入式系统时,设计人员根据系统要求,分别编写了如下三部分程序,其中: [C代码1]是李工为了在嵌入式平台上开发一段可变参数函数,在X86平台上实现的一个参数个数可变函数实例。 [
admin
2011-03-25
113
问题
阅读以下关于C语言及C代码的叙述。
[说明]
在开发某嵌入式系统时,设计人员根据系统要求,分别编写了如下三部分程序,其中:
[C代码1]是李工为了在嵌入式平台上开发一段可变参数函数,在X86平台上实现的一个参数个数可变函数实例。
[C代码2]是王工在编写软件时,自己编写的内存拷贝函数。
[C代码3]是赵工编写的一段数据处理的程序,其中fun0的含义为从已创建的一个单向链表中查找倒数第index个结点。他的设计思路为:首先创建两个指针ptr1,ptr2,并且都指向链表头,然后ptr1向前走index步,这样ptr1和ptr2之间就间隔index个结点,然后ptr1和ptr2同时向前步进,当ptr1到达最后一个结点时,ptr2就是倒数第index个结点了。ReverseList()为赵工编写的对已有单向链表进行逆序重排的函数。
[C代码1]
long sum (int i,…)
{
int*p,j;
long s=0;
p=&i+1;
for(j=0;j<i;j++)
s+=p[j];
return s;
}
long Sum=sum(3,1,2,3);
[C代码2]
static int pent;
……··
void*MyMemcpy(void*dest, const void*src, int n)
{
char*pDest=(char*)dest;
char*pSrc=(char*)src;
for(int i=0; i<n; i++) {
*(pDest +i)=*(pSrc+i);
}
return dest;
}
[C代码3]
node *fun(node*head, int index)
{
node *ptr1,*ptr2;
int i=0:
ptr1=head;
ptr2=head;
if( head==NULL || head->next==NULL )
return ptr1;
while (i<index)
{
(1) ;
if (ptrl==NULL)
return head;
i++;
}
while (ptr1->next !=NULL)
{
ptr1=ptr1->next;
(2) ;
}
return (3) ;
}
node* ReverseList (node *head)
{
node *temp1=NULL;
node *temp2=NULL;
node *temp3=NULL;
if ((head->next==NULL) || (head==NULL))
{
return head;
}
temp1=head;
temp3=temp1->next;
temp1->next=NULL;
while (temp3->next !=NULL)
{
temp2=temp3;
temp3=temp3->next;
(4) ;
temp1=temp2;
}
temp3->next=temp1;
return (5) ;
}
请问C代码2中static的作用是什么?const的作用是什么?王工自己编写的内存拷贝函数安全吗?如存在缺陷,请指出缺陷在哪里。
选项
答案
1) static的作用:是将变量修饰成静态变量,静态变量的存储地址在整个程序的运行执行期间均保留,不会被别的变量占据。 2) const的作用:是用于冻结一个变量,使其值在程序中不能被进一步改变。 3)不安全,有缺陷。 4)应对形参的有效性进行检查,应判形参dest、src指针是否为空,形参n是否大于0,还应保证dest所指向的内存空间不越界。
解析
在程序设计中,static变量和const变量的应用非常广泛。static变量表示将变量修饰为静态变量,其含义是指其对应的存储空间在整个程序的运行过程中都保持不变,不会像堆栈那样被重复使用。static即可以用来修饰局部变量,也可以修饰全局变量。
一旦变量定义为是const,则其对应的值不能再被修改。在程序运行中,此变量的值就一直维持在其初始化时候的值。
王工编写的这段程序不安全,存在严重的安全漏洞,具体的缺陷包括:
(1)对于指针参数的有效性没有进行任何判断,如果指针为NULL,这样访问存在严重的安全问题。
(2)参数n的有效性也没有进行判断,如果参数n对应的空间超过src所包含的空间,则函数得到的结果和期待的结果会有所偏差。同样,如果n对应的空间超过dest所包含的地址空间,则会造成程序的混乱,会将内存冲掉,可能导致灾难性后果。
转载请注明原文地址:https://www.kaotiyun.com/show/FhWZ777K
本试题收录于:
嵌入式系统设计师下午应用技术考试题库软考中级分类
0
嵌入式系统设计师下午应用技术考试
软考中级
相关试题推荐
在数据库系统的组织结构中,下列( )映射把数据库与概念数据库联系了起来。
某数据库应用系统在运行过程中,发现随着数据量的不断增加,有部分查询业务和数据更新业务执行耗时越来越长。经分析,这些业务都与表Tablel有关。假设Tablel有30多个字段,分别为(Key,A2,A2,…Am,B1,B2,…Bn)。执行频度较高的查询业务都
E-R图中的实体集A、B之间为1:*联系,转换为关系模型时,在B实体集中增加A实体集的标识符作外码;而在面向对象数据模型中,(69)________________。
设置日志文件的目的不包括(59)________________。
设有n阶三对角矩阵A,即非零元素都位于主对角线以及与主对角线平行且紧邻的两条对角线上,现对该矩阵进行按行压缩存储,若其压储空间用数组B表示,A的元素下标从0开始,B的元素下标从1开始。已知A[0,0]存储在B[1],A[n-1,n-1]存储在B[3n-2]
在索引改进中,一般的调整原则是:当(62)是性能瓶颈时,则在关系上建立索引;当(63)是性能瓶颈时,则考虑删除某些索引;管理人员经常会将有利于大多数据查询的所以设为(64)。(64)
(16)是构成我国保护计算机软件著作权的两个基本法律文件。单个自然人的软件著作权保护期为(17)。(17)
并发操作可能带来的数据不一致性有(52),解决的办法是并发控制,主要技术是(53)。(53)
在数据库系统运行中,经常会找出频繁执行的SQL语句进行优化。常见的优化策略有:尽可能减少多表查询或建立(65);用带(66)的条件子句等价替换OR子句;只检索需要的属性列等。(66)
以下关于系统原型的叙述中,不正确的是()。
随机试题
简要说明艺术作品中再现与表现的关系。
患者,女,26岁,停经一个半月,有时恶心,呕吐。经腹盆腔超声检查发现:子宫纵断时腔内发现一个妊娠囊,横断时发现双孕囊。最可能是以下哪种伪像所致
被称为"十二经脉之海"的是
某工程项目业主通过工程量清单招标确定某承包商为中标人,并签订了工程合同,工期为16天。该承包商编制的初始网络进度计划(每天按一个工作班安排作业)如图4.1所示,图中箭线上方字母为工作名称,箭线下方括号外数字为持续时间,括号内数字为总用工日数(人工工资标准均
企业在建筑业资质证书有效期内()等发生变更的,应当在工商部门办理变更手续后1个月内办理资质证书变更手续。
客户的委托如果未能成交,证券经纪商应立即将冻结的资金或证券解冻。()
下列哪种情况使总收益增加?()
在当代工业社会里,()已发展成为一种常规的制度设置,它对有效解决社会问题、满足公民基本社会需要和预防社会危机,发挥着核心作用。
1964年的全国京剧现代戏观摩演出,不仅使戏曲表演现代生活大放异彩,而且为古老戏曲的音乐改革,拓开了柳暗花明的缤纷世界。三十多年过去了,那次演出的优秀剧目以及后来被反复锤炼而称为“样板”的诸多现代剧目,公道地讲,其音乐成就,至今难有人______。
Theold______liveinthecountrythaninthecity.
最新回复
(
0
)