标题1、编写strcpy 函数要注意什么
已知strcpy 函数的原型是 char *strcpy(char *strDest,
const char *strSrc);其中strDest是目的字符串,
strSrc 是源字符串。
(1)不调用C++/C 的字符串库函数,请编写函数
strcpy 。
(2)strcpy 能把 strSrc 的内容复制到strDest,为什
么还要char * 类型的返回值?
#include <stdio.h>
#include <stdlib.h>
void Strcpy(char ** a,char *b)
{
char *c=*a;
while(1)
{
**a = *b;
printf("%c\n",**a);
(*a)++;
b++;
if(*b == 0)
{
break;
}
}
/* while(**b)
{
printf("%c",**b);
*b=*b+1;
// *b++;//不行,因为++的优先级更高因此要用(),例如:(*b)++
}*/
*a=c; //特别注意这里的*a的地址要指回原来的地址,不然主函数中得不到想要的结果
}
int main()
{
char *str="hello!";
char *p;
int x=strlen(str);
p=(char *)malloc(x);
Strcpy(&p,str);
printf("++++%s\n",p);
system("pause");
return 0;
}
标题2 、什么是中断?中断发生时CPU做什么工作?
所谓中断是指系统发生某一事件后,CPU暂停正在执行的程序转去执行处理该事件的程序过程,处理中断事件的程序称为中断处理程序,产生中断信号的那个部件称为中断源。硬件的中断机构与处理这些中断的程序统称为中断系统。
当中断发生时,硬件机构自动地进入响应中断过程,由操作系统的中断处理程序对中断事件进行处理,具体过程如下:
①.保存现场
系统开辟现场区,并将现场区组织成“栈”结构,当中断响应时,(1)硬件结构自动将PS和PC寄存器的内容压入栈中作为现场信息保存起来。(2)根据发生的中断,硬件从指定的中断向量单元中取出PS和PC内容,分别装入PS和PC寄存器,同时正确填入寄存器的“当前状态”和“先前状态”字段。
②.分析原因,转中断处理程序
不同原因产生的中断事件要进行不同的处理,根据中断的路寄存器内容得出发生该种中断的具体原因。转入相对应的中断处理程序运行。
③.恢复现场
在多级中断系统中,考虑退回当前中断时,必须依据原先被中断的程序,完成不同的工作,中断处理结束后,软件必须退出中断。如果此次是高级中断,并且被中断的程序是一个低级中断处理程序,则此次中断应返回到该低级中断处理程序。如果原来被中断的是用户程序,则退出中断前应先考虑进行一次调度选择,以挑选出更适合在当前情况下运行的新程序。