指针与数组的区别 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
- 指针与数组的区别 and 对函数的理解
- 对指针数组,数组指针,函数指针数组,函数数组指针的一些简单理解
- 对多维数组与指针的理解
- 对指针与数组名的理解
- 对指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针的理解
- 对指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针的理解
- 对指针数组,数组指针,函数指针, 函数指针数组,指向函数指针数组的指针的理解
- 深入理解数组与指针的区别
- 深入理解数组指针与指针数组的区别
- 指针数组与数组指针的区别,指针函数与函数指针的区别
- 数组指针和指针数组的区别、指针函数与函数指针的区别
- 对数组指针的理解
- 对“数组指针”的理解
- 对数组指针的理解
- 对指针数组的理解
- 数组概念与理解及数组与指针的区别
- 数组指针与指针数组的区别(函数指针与指针函数类似)
- 理解 指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针
- 2016.7.20的血泪史 (light oj 1040)
- 十个热门开源深度学习框架
- Centos 6.5下源码包安装libvirt-1.2.9和libvirt-php-0.5.1
- 零长度数组
- SQL50题
- 指针与数组的区别 and 对函数的理解
- mysql的整型
- sublime text 2安装插件 lua
- Memcached入门
- ios developer tiny share-20160719
- UVA439Knight Moves
- Codeforces 450B Jzzhu and Sequences
- 生成函数入门-普通型生成函数
- 698A - Vacations(简单dp)