指针与数组的区别 and 对函数的理解

    从空间分配上看,数组是静态分配,空间是连续的,而指针是动态分配,空间不一定连续,只从指针分配空间的原理可以看出;从访问效率上看,数组是直接访问,所以效率较高,而指针是间接访问,效率自然是没有数组高;从安全性上看,数组易导致访问越界的问题,而指针容易导致内存泄漏;作为函数形参时,数组都会默认转化为相对应的指针,比如一维数组名代表一维数组首元素的地址。



C语言中函数可以提高代码的复用性,维护性,扩展性。

   函数的调用过程:

   1.通过函数名找到函数的入口地址

   2.给形参分配内存空间

   3.传值:把实参变量对应空间的值传给形参

   4.执行函数体语句

   5.函数返回并释放内存空间(全局变量在程序结束后释放内存空间,这里是局部变量释放内存空间)

   写函数时不要忘记入口参数检查   

   有时我们会见到main函数中有参数:

<pre name="code" class="cpp">int main(int argc ,char *argv[])
{
    printf("%d\n",argc);
    int i;
    for(i = 0; i < argc; i++)
    {
        printf("%s\n",agrv[i]);
    }
    return 0;
}

    其中argc代表的参数个数,argv[]里面存放这参数的内容,主函数参数就是命令行参数。 


函数指针:

#include <stdio.h>
int add(int a,int b)
{
    return a + b;
}
int sub(int a, int b)
{
    return a - b;
}
int cal(int *p_func,int a,int b)
{
    p_func(a,b);
}
int main()
{
    int num1 = 5;
    int num2 = 4;
    int (*p_func)(int,int);
    p_func = add;//add是函数入口地址,也可以p_func = &add,更偏向于前者
    cal(p_func,num1,num2);
    /*p_func可以换成add,add函数是一个回调函数,体现了C语言的多态,想增加其他函数功能是,只需要重新实现其函数功能,把p_func 换成其函数名即可。
    return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值