首页 > 题库 > 职业考证 > 软考 > 嵌入式系统设计师 > 问答题

阅读以下关于C语言及C代码的叙述,回答问题1至问题3,将答案填入答题纸的对应栏内。
【说明】
在开发某嵌入式系统时,设计人员根据系统要求,分别编写了如下三部分程序,其中:
【C代码1】是李工为了在嵌入式平台上开发一段可变参数函数,在X86平台上实现的一个参数个数可变函数实例。
【C代码2】是王工在编写软件时,自己编写的内存拷贝函数。
【C代码3】是赵工编写的一段数据处理的程序,其中fun( )的含义为从已创建的一个单向链表中查找倒数第index个结点。他的设计思路为:首先创建两个指针ptr2,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(ptr1 == 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);
}



【问题1】(3分)
执行C代码1后,Sum的值应为多少?请用十进制表示。
【问题2】(7分)
请问C代码2中static的作用是什么?const的作用是什么?王工自己编写的内存拷贝函数安全吗?如存在缺陷,请指出缺陷在哪里。
【问题3】(5分)
仔细阅读并分析C代码3,填补其中的空(1)~(5)。

参考答案: 查看答案 查看解析 下载APP畅快刷题

相关知识点试题

相关试卷