C语言中函数名必须唯一吗 c语言的函数名实际上是什么

在C语言中:在同一文件中,函数的名字可否相同C语言在同一个源程序文件中,两个函数肚饿名字不可以相同
C++允许相同,这个叫重载 , 但是相同名字的函数的参数的个数或者类型必须不同 。
在C语言中,函数名跟数组名能不能一样如果这个函数和数组在同一个源文件内,并且这个数组是全局变量 , 那么,就不能同名 。
否则,在你使用这个名字时 , 默认是使用当前函数里声明的同名数组,而不是函数外部的同名函数 。
函数调用过程是怎么实现的C程序的基本单元是函数 。函数中包含了程序的可执行代码 。每个C程序的入口和出口都位于函数main()之中 。main()函数可以调用其他函数,这些函数执行完毕后程序的控制又返回到main()函数中,main()函数不能被别的函数所调用 。通常我们把这些被调用的函数称为下层(lower-level)函数 。函数调用发生时,立即执行被调用的函数,而调用者则进入等待状态,直到被调用函数执行完毕 。函数可以有参数和返回值 。
程序员一般把函数当作“黑箱”处理,并不关心它内部的实现细节 。当然程序员也可以自己开发函数库 。
说明一点,函数这一节很重要,可以说一个程序的优劣集中体现在函数上 。如果函数使用的恰当,可以让程序看起来有条理,容易看懂 。如果函数使用的乱七八糟,或者是没有使用函数,程序就会显得很乱 , 不仅让别人无法查看,就连自己也容易晕头转向 。可以这样说 , 如果超过100行的程序中没有使用函数,那么这个程序一定很罗嗦(有些绝对,但也是事实) 。
一、函数的定义
一个函数包括函数头和语句体两部分 。
函数头由下列三不分组成:
函数返回值类型
函数名
参数表
一个完整的函数应该是这样的:
函数返回值类型 函数名(参数表)
{
语句体;
}
函数返回值类型可以是前面说到的某个数据类型、或者是某个数据类型的指针、指向结构的指针、指向数组的指针 。指针概念到以后再介绍 。
函数名在程序中必须是唯一的,它也遵循标识符命名规则 。
参数表可以没有也可以有多个,在函数调用的时候,实际参数将被拷贝到这些变量中 。语句体包括局部变量的声明和可执行代码 。
我们在前面其实已经接触过函数了,如abs(),sqrt(),我们并不知道它的内部是什么,我们只要会使用它即可 。
下面主要介绍无参数无返回值的函数调用 。
二、函数的声明和调用
为了调用一个函数,必须事先声明该函数的返回值类型和参数类型,这和使用变量的道理是一样的(有一种可以例外,就是函数的定义在调用之前,下面再讲述) 。
看一个简单的例子:
void a(); /*函数声明*/
main()
{
a(); /*函数调用*/
}
【C语言中函数名必须唯一吗 c语言的函数名实际上是什么】void a() /*函数定义*/
{
int num;
scanf(%d,num);
printf(%d\n,num);
}
在main()的前面声明了一个函数,函数类型是void型,函数名为a,无参数 。然后在main()函数里面调用这个函数,该函数的作用很简单,就是输入一个整数然后再显示它 。在调用函数之前声明了该函数其实它和下面这个程序的功能是一样的:
main()
{
int num;
scanf(%d,num);
printf(%d\n,num);
}
可以看出,实际上就是把a()函数里面的所有内容直接搬到main()函数里面(注意,这句话不是绝对的 。)
我们前面已经说了,当定义在调用之前时 , 可以不声明函数 。所以上面的程序和下面这个也是等价的:

推荐阅读