函数

来源:互联网 发布:北京奥运会姚明数据 编辑:程序博客网 时间:2024/05/18 19:21
1.指针和数组的区别
空间分配:数组是静态分配空间的,而指针是动态分配空间的。
效率:数组的效率比指针高
传参:传参的过程中一律变为指针
安全性:数组易越界,指针有可能成为野指针,从而泄露内存
处理方式:数组偏向于值的处理,指针偏向于地址处理
指针指向的空间不一定连续,而数组分配的空间一定连续
2.内存错误的常见原因
(1)内存分配未成功,却使用它
(2)内存分配成功,但未初始化就引用它
(3)内存分配成功并且已经初始化,但操作越过了内存的边界
(4)忘记了释放内存,造成内存泄漏
(5)释放了内存却继续使用它    
3.使用函数的好处
(1)提高代码的复用性
(2)提高代码的维护性
(3)迭代开发
4.调用函数的过程
(1)通过函数名找到函数的入口地址
(2)给形参分配空间
(3)把实参变量对应空间的值传递给形参
(4)函数返回并释放内存空间
(5)函数返回并释放内存空间
如何确定是传值还是地址
(1)读(不修改)实参变量对应内存空间值,传实参变量名 
(2)写(修改)实参变量对应内存空间,传实参变量地址
5.当需要返回多个值时,可以使用传出参数,实参无值,但必须对实参变量地址操作
实例:char *func(int *num)
      {
       char *src="hello world";
       *num=5;
       return src;
       }
       int main()
      {
        int num;
        char *ptr=fun(&num);
        printf("ptr=%s\n",ptr);
        printf("num=%d\n",num);
       }
实参num并没有值,然后将地址赋给形参num,也就是形参num指向实参num,子函数中*num=5代表直接将实参num里的内容变为5,然后再返回src的内容
6
exit(1):结束整个程序,()内的值可以修改,用echo $?打印当前程序返回值,可以看出在哪推出

7
函数参数检查
if(...==NULL||...==NULL)
{
 return NULL;
}
函数指针
int (*p_func)(int , int)
p_func=add;
int result=p_func(num1,num2);
函数指针体现面对对象中的多态
8
回调函数:是一个通过函数指针调用的函数
int add(int a,int b)
{
 return a+b;
}
int cal(int (*p_func)(int,int),int a,int b)
{
1 0
原创粉丝点击