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

来源:互联网 发布:成都软件开发怎么样 编辑:程序博客网 时间:2024/05/24 02:28

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



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;}



0 0
原创粉丝点击