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语言中为啥函数不能重名?请举个函数重名的例子,谢谢的主要内容,如果未能解决你的问题,请参考以下文章