c语言内嵌入式编程,C语言嵌入式编程

1. static全局便娘与普通全局变量有什么区别?static局部变量和普通局部变量有什么区别?satic函数与普通函数有什么区别?

static全局变量只初使化一次,防止在其他文件单元中被引用(修改链接属性);

static局部变量只被初始化一次,下一次依据上一次结果值(延长生命期);

static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝

2.有双向循环链表节点定义为

struct node

{

int data;

struct nod *front, *next;

};

有两个双向链表A,B,知道其头指针为:pHeadA,pHeadB,请写一个函数将两个链表中的data值相同的节点删除

3. 使用自旋锁时应注意哪些方面

1). 自旋锁保护的临界区里,不能有引起睡眠的函数,如kmalloc,copy_from_user等。

因为如果某进(线)程获得锁并进入了临界区,但它却在临界区里睡着了,那么别的需要这把锁的进(线)程将可能要等待一段很久的时间,最坏的情况是死锁。

所以,在自旋锁里的临界区

2). 在LDD3里说到这样的一种情况:

在单CPU环境里,如果某进(线)程获得了锁并准备对它的设备进行存取,此时发生了中断,而中断处理也要对该设备进行存取所以中断处理

3). 自旋锁的持有时间应尽可能的短。因为临界区太大,持有时间太长,其他进程可能面临长时间等待,降低了系统性能。

4.字符串倒序程序,类似将"innos"倒序后变为"sonni",请指出下面代码有哪些错误并修正:

#include//要包含这两个头文件

#include

#include "string.h"

int main(void)

{

char *pDest, *pSrc;

char *src = "neoway";

char *dest = NULL;

int length = strlen(src);

dest = (char *)malloc(length + 1);//多一个空间存储字符串结束符

pDest = dest;

pSrc = src + length - 1;//注意下表从0开始src[length]的值为'\0'

                 while(length-- != 0)

*pDest++ = *pSrc--;//掉了*

*pDest = '\0';

printf("%s", dest);

free(dest);//这里要释放一下

                return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值