更多课程 选择中心

C/C++培训
美国上市教育机构

400-111-8989

C++培训

C语言函数相关知识

  • 发布:C++培训
  • 来源: 努力吃变胖虎
  • 时间:2019-11-06 15:55

函数参数的传递

本文主要讨论一下函数中参数的传递以及一些要注意的问题。如果函数要使用参数,则必须声明接受参数值的变量。这些变量称为函数的形式参数。形式参数就像函数内的其他局部变量,在进入函数时被创建,退出函数时被销毁。

当调用函数时,有两种向函数传递参数的方式:

①传值调用:把参数的实际值复制给函数的形式参数。在这种情况下,修改函数内的形式参数不会影响实际参数。结合下面例子进行理解:

C语言函数相关知识

输出如下:

C语言函数相关知识

②引用调用:通过指针传递方式,形参为指向实参地址的指针,当对形参的指向操作时,就相当于对实参本身进行的操作。结合下例理解:

C语言函数相关知识

输出:

C语言函数相关知识

默认情况下,C使用传值调用来传递参数。一般来说,这意味着函数内的代码不能改变用于调用函数的实际参数。

内部函数与外部函数

根据函数能否被其他源文件调用,将函数区分为内部函数和外部函数。

内部函数

如果一个函数只能被本文件中其他函数所调用,它称为内部函数。在定义内部函数时,在函数名和函数类型的前面加 static,即:

static 类型名 函数名 (形参表)

内部函数又称静态函数。使用内部函数,可以使函数的作用域只局限于所在文件。即使在不同的文件中有同名的内部函数,也互不干扰。提高了程序的可靠性。

外部函数

如果在定义函数时,在函数的首部的最左端加关键字 extern,则此函数是外部函数,可供其它文件调用。如函数首部可以为:

extern 类型名 函数名 (形参表)

C 语言规定,如果在定义函数时省略 extern,则默认为外部函数。在需要调用此函数的其他文件中,需要对此函数作声明(不要忘记,即使在本文件中调用一个函数,也要用函数原型来声明)。在对此函数作声明时,要加关键字 extern,表示该函数是在其他文件中定义的外部函数。

关于main函数的参数

在有些很专业的书会看到如下代码:

int main( int argc, char *argv[] )

上面的代码中 main 函数带了参数。

但是有时又会看见main函数没有参数,如下:

int main()

那么 main 函数到底有没有参数,有没有参数会不会有什么影响?

答:

main 函数其实与我们写的函数没有什么区别,它也会有自己的参数。argc 和 argv 是 main 函数的形式参数。这两个形式参数的类型是系统规定的。如果 main 函数要带参数,就是这两个类型的参数;否则main函数就没有参数。

变量名称argc和argv是常规的名称,当然也可以换成其他名称。在传入参数后main函数收到参数后就会做自己的事。那么,实际参数是如何传递给main函数的argc和argv的呢?我们知道,C程序在编译和链接后,都生成一个exe文件,执行该exe文件时,可以直接执行;也可以在命令行下带参数执行,命令行执行的形式为:可执行文件名称 参数1 参数2 ... ... 参数n。可执行文件名称和参数、参数之间均使用空格隔开。如果按照这种方法执行,命令行字符串将作为实际参数传递给main函数。具体为:

(1)可执行文件名称和所有参数的个数之和传递给 argc;

(2)可执行文件名称(包括路径名称)作为一个字符串,首地址被赋给argv[0],参数1也作为一个字符串,首地址被赋给 argv[1],... ...依次类推。

免责声明:内容和图片源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:关于C语言中scanf()的用法
下一篇:C++ 获取文件大小

C++ Swap函数有几种写法?

C++基础-内存管理

C++数组相关

C++冒泡排序是这么回事

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省