04、C语言(杂)

文章探讨了代码中关于ISR的限制,面向对象的三大特征,包括封装性、继承性和多态性。同时,指出了代码中可能导致内存问题的隐患,如内存泄露和内存溢出的定义。此外,讨论了参数传递的方式以及指针运算的差异,如*p++和(*p)++的区别。
摘要由CSDN通过智能技术生成

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)++先取值,再值自增

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值