c语言中为啥函数不能重名?请举个函数重名的例子,谢谢

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言中为啥函数不能重名?请举个函数重名的例子,谢谢相关的知识,希望对你有一定的参考价值。

可以重名,不过函数的参数类型或数量要不一致,例子如下:
//递归求阶乘
int calc(int num)
if(num==0)
return 0;
else
return num*calc(num-1);


//递归求任意一个整数的整数次方
int calc(int num,int count)
if(num==0)
return 0;
else if(count == 0)
return 1;
else
return num*calc(num,count-1);


这两个函数方法名称完全一样,但是参数不一样,这种做法有一个叫法,叫函数的重载
参考技术A 在当面的代码中要使用第三方A的一个库函数:intfoo(int,int);同时为了满足上层库B的需要,又实现了一个同名函数:voidfoo(void);

Linux C基本要素

一:C代码规范

1. 标识符的命名

  标识符指的是程序的函数名和变量名,C语言对标识符命名的限制如下:

   (1)只能包含数字,字母以及下划线,不能包含其他任何特殊字符

   (2)只能以字母或者下划线开头

   (3)不能与系统已有的关键字重名,也不能与本命名空间中具有相同作用域的其他标识符重名

  C语言也有自己的命名空间(namespace),但相对于C++而言简单多了,实际上在一个C程序中,所有的标识符处在4个命名空间的其中一个。这4个命名空间有:

    (1)所有的结构体,联合体,枚举列表的标签名

    (2)每一个结构体,联合体内部的成员列表

    (3)goto语句的标签符

    (4)其他

  例如:

  技术图片

  技术图片  

2. 缩进

  缩进从语法角度上讲无关紧要,但对于程序的可读性和可维护性而言,无疑是重中之重。例如:、    

     技术图片

 

    缩进时,最好用8个空格缩进,避免用4个空格甚至两个空格,如果厌烦缩进要敲很多空格,当然可以用<Tab>来代替,但代价是代码最好不要多款不同的编译器来回编辑,因为不同的编译器的制表符所代表的空格数可能不一致。我们有几种办法来避免:

   (1)统一用恒定的空格缩进;

   (2)不要在不同的编译器中”倒腾“程序

   (3)切换编译器时设置编译器的选项,使他们的制表符代表的空格数相等。

 3. 空行和空格

  空行和空格也是提高程序可读性的很重要的一方面,因此适当的空格和空行将程序看起来更加清晰。什么时候需要使用空格和空行将不用的标识符和不同代码隔开,并没有统一的说法。可以借鉴:

  再赋值,比较,逻辑操作等运算符中,用空格符将操作数隔开,在标点符号后面也用空格隔开。

4. 括号

  函数体和循环结构,分支结构等代码需要使用花括号将其代码括起来,对于函数而言,在Linux编码风格,左右花括号分别占一行,在其他代码块中,左花括号可以放在上一行最右边,右花括号单独占一行。

5. 注释

  第一,用形式/* ………*/的方式书写注释,被这一对正斜杠和星号包围的内容将视为注释语句,这是C语言注释语句的传统编写方式,它有两个他特点:一是不能嵌套,二是可以多行注释。

  第二,用刑如//……的方式书写注释,这是C++风格的注释,这种方式只能注释一行。

 

二:基本类型

1. 布尔类型

  C语言中有一类只有两种可能的取值:真或者假。这就是布尔类型。

  在C语言中可以用_Bool或者bool定义布尔类型,当使用关键字bool定义变量时候,需要包含头文件<stdbool.h>,包含了这个文件之后还可以使用系统预定义的布尔常量true和false,例如定义一个布尔变量:

  bool flag;  //或者_Bool flag

  在C语言中,一般用1表示true,0表示false,因此布尔类型其实就是一个整数类型,只是原则上它仅仅需要1位来进行储存。因为对于0和1而言,1位储存空间就足够了,实际上bool变量占用一个字节,而true和false占用四个字节(他们实际上都是int类型)

  技术图片

  技术图片

 

 2. 整数数据

  技术图片

 

   显然,对于某一种特定的整数类型都有其表示的范围,超出范围的数值将无法正常储存,这种情况称为溢出。当有符号短整数变量short m=32767,如果让m再加1,则在储存器上不可能储存32768,而是回到最小值-32768.

  由这些基本的数据类型关键字定义出来的变量的长度,在不同的平台下可能不同,如果我们程序需要在不同的平台移植

 

以上是关于c语言中为啥函数不能重名?请举个函数重名的例子,谢谢的主要内容,如果未能解决你的问题,请参考以下文章

C语言怎么用for循环为二维数组赋值?请举个例子。

C语言为啥可以重写标准库函数?

为啥Python的CV2不能用。

Linux C基本要素

c语言中怎么调用windowsAPI函数,

C++中的函数名称粉碎机制和它的逆向应用(符号冲突函数重名变量重名)