04、C语言(杂)

1、找出下面代码的问题

_interrupt double cpmpute_area(double radius)
{
    Double area = PI * radius * radius;
    Printf(“\nArea = %f”,area);
    Return area;
}

1、ISR不能有参数。

2、ISR不能有返回值。

3、ISR应该短且有效率,在ISR中做浮点运算不明智。

2、 面向对象的三大特征

封装性(抽象为类)

继承性(继承属性和方法)

多态性(父类对象根据当前复制给他的子对象的特性以不同的方式运作):

3、请问以下代码有什么问题:

int  main() 
{ 
char a; 
char *str=&a; 
strcpy(str,"hello"); 
printf(str);
return 0; 
} 

没有为str分配内存空间,将会发生异常问题出在将一个字符串复制进一个字符变量指针所指地址。虽然可以正确输出结果,但因为越界进行内在读写而导致程序崩溃。

4、参数传递有几种方式

传值,传指针或者引用

5、内存泄露和内存溢出的区别

内存溢出就是要求分配的内存大小超出了定义时所预设的内存大小,系统不能满足需求,于是产生溢出。 

内存泄漏是指向系统申请分配内存进行使用(new),可是使用完了以后却不归还(delete),结果你申请到的那块内存你自己也不能再访问(也许你把它的地址给弄丢了),而系统也不能再次将它分配给需要的程序。

6、*p++和*(p)++的区别

Int array[5]={1,3,4,5,6};

Int *p=array;

Int num=*p++;

Print(”%d %d\n”,num,*p);

Int array[5]={1,3,4,5,6};

Int *p=array;

Int num=(*p)++;

Print(”%d %d\n”,num,*p);

输出 1 3

*p++先取值,再地址自增

输出 1 2

(*p)++先取值,再值自增

猜你喜欢

转载自blog.csdn.net/weixin_45981798/article/details/129976918
今日推荐