今天是我第一天写博客,最近一直在看c语言的书。函数调用是一个非常重要的知识点,相当于各个模块的“接口”,当然c语言里没有接口的说法。
c语言中实参和形参要么是基本的数据类型或者是结构体类型,当然也可以指针(地址),由于在c语言规定数组名就是一个地址,因此也可以把数组规定到指针的行列。另外,不要天真的以为指针是一种数据类型,int a;int ×p=a;指针因为存储了某种类型变量的地址而指向某个变量。下面就分两种情况来讨论一下。
首先,不管怎样,实参到形参都是值传递,只不过有时是一个具体的值,有时是值的地址。
1、当参数为基本数据类型变量或者是结构体变量时,实参把对应的变量的值传给了形参,为了体现出函数调用所取得的效果,可以选择在函数体设一个返回值即return a;作为函数的出口然后在主调函数里设一个变量接受这个return的返回值(如求两个整数的最值)。另外根据我看书的经验,也可以直接通过在函数体里执行输出语句将结果打印到屏幕上(如输出一个顺序表里的值)
2、第二种方式就是老师经常强调的传递指针,在内存块里存储着各个数据的指针,当实参把值传递给形参时,实参和形参共同指向同一段内存块,在被调用的函数里,对数据的各种操作都可以在主函数里体现,因为主函数里的实参始终指向内存块的一个地址。
如void main(){int b[10],*p;p=a;paixu(a,10);}void paixu(int a[],int n){.....}p就是一直指向数组a的首地址。
总之,慢慢体会,多看书,一定会有所收获。每一个在程序员道路上行走的屌丝都能看到新世纪的阳光。
c语言中实参和形参要么是基本的数据类型或者是结构体类型,当然也可以指针(地址),由于在c语言规定数组名就是一个地址,因此也可以把数组规定到指针的行列。另外,不要天真的以为指针是一种数据类型,int a;int ×p=a;指针因为存储了某种类型变量的地址而指向某个变量。下面就分两种情况来讨论一下。
首先,不管怎样,实参到形参都是值传递,只不过有时是一个具体的值,有时是值的地址。
1、当参数为基本数据类型变量或者是结构体变量时,实参把对应的变量的值传给了形参,为了体现出函数调用所取得的效果,可以选择在函数体设一个返回值即return a;作为函数的出口然后在主调函数里设一个变量接受这个return的返回值(如求两个整数的最值)。另外根据我看书的经验,也可以直接通过在函数体里执行输出语句将结果打印到屏幕上(如输出一个顺序表里的值)
2、第二种方式就是老师经常强调的传递指针,在内存块里存储着各个数据的指针,当实参把值传递给形参时,实参和形参共同指向同一段内存块,在被调用的函数里,对数据的各种操作都可以在主函数里体现,因为主函数里的实参始终指向内存块的一个地址。
如void main(){int b[10],*p;p=a;paixu(a,10);}void paixu(int a[],int n){.....}p就是一直指向数组a的首地址。
总之,慢慢体会,多看书,一定会有所收获。每一个在程序员道路上行走的屌丝都能看到新世纪的阳光。