普通变量和数组作为函数参数的区别
2016-09-20 15:44
302 查看
1.在普通变量作为函数参数时,形参变量和实参变量是由编译系统分配的两个不同的内存单元。在函数调用时发生的值传送是把实参变量的值赋给形参变量。
2.在用数组名作为函数参数时,不是进行值得传递,即不是把是参数组的每一个元素的值都赋予形参数组的各个元素。因为实际上形参数组并不存在,编译系统不为形参分配内存。那么数据的传递究竟如何实现?我们都知道,数组名就是数组的首地址。因此在数组名作为函数参数时所进行的传递只是地址的传递,也就是说把是参数组的首地址赋予形参数组名。形参数组名取得该首地址之后,也就是等于有了实在的数组。实际上是形参数组和实参数组为同一数组,共同拥有一段内存空间。也就是数组名作为函数参数时,不是值得单向传递,而是把是参数组的首地址传递给形参数组,这两个数组共用一段储存单元。
3.C编译系统对形参数组的大小不做检查,所以形参数组可以不指定大小。
函数形式如:void print(int a[]).或者void print(int a[].int lenth)其中lenth表示数组大小。
4.多维数组也可以作为函数的参数。在函数定义的时候可以指定一维的长度,也可以省去第一维的长度如:int max(int a[][10])或者 int max(int a[3][10])
2.在用数组名作为函数参数时,不是进行值得传递,即不是把是参数组的每一个元素的值都赋予形参数组的各个元素。因为实际上形参数组并不存在,编译系统不为形参分配内存。那么数据的传递究竟如何实现?我们都知道,数组名就是数组的首地址。因此在数组名作为函数参数时所进行的传递只是地址的传递,也就是说把是参数组的首地址赋予形参数组名。形参数组名取得该首地址之后,也就是等于有了实在的数组。实际上是形参数组和实参数组为同一数组,共同拥有一段内存空间。也就是数组名作为函数参数时,不是值得单向传递,而是把是参数组的首地址传递给形参数组,这两个数组共用一段储存单元。
3.C编译系统对形参数组的大小不做检查,所以形参数组可以不指定大小。
函数形式如:void print(int a[]).或者void print(int a[].int lenth)其中lenth表示数组大小。
4.多维数组也可以作为函数的参数。在函数定义的时候可以指定一维的长度,也可以省去第一维的长度如:int max(int a[][10])或者 int max(int a[3][10])
相关文章推荐
- 普通变量和数组作为函数参数的区别
- C语言基础知识之(十二):结构体作为函数的参数(结构体变量、结构体数组)
- php 函数参数引用和普通变量 传参区别
- 作为函数参数时String和String[]数组的区别
- C语言学习5:数组定义,数组名的含义,数组作为函数参数,数组赋值,数组左右移动,最大最小,反向遍历,冒泡排序,sizeof 和strlen区别,gets和puts,strcpy,strcat,strcmp,strchr,strstr,strlen
- 结构体变量、结构指针变量、结构数组作为函数的参数应用实例分析
- 数组名作为函数参数和数组元素作为函数参数有什么不同?‘\0’和“\0”的区别?
- 关于指针作为函数参数传递的理解,对比普通变量作为函数参数的需注意点,其实就是行参和实参的问题。
- 作为函数参数时String和String[]数组的区别
- 结构体变量、结构指针变量、结构数组作为函数的参数应用实例分析
- 结构体变量、结构指针变量、结构数组作为函数的参数应用实例分析 .
- 结构体变量、结构指针变量、结构数组作为函数的参数应用实例分析
- C语言中指针变量作为函数参数和一般变量作为函数参数的区别
- 结构体变量、结构指针变量、结构数组作为函数的参数应用实例分析
- C#委托本质探索 七、方法变量作为函数参数传递
- static全局变量与普通全局变量/static局部变量与普通局部变量/static函数与普通函数的区别
- 如何理解数组作为函数参数时,数组名就是指针?
- static全局变量,局部变量,函数与普通全局变量,局部变量和函数的区别
- static全局变量,局部变量,函数与普通全局变量,局部变量和函数的区别
- 数组大小不能在函数内计算,而是应该作为参数传进来