C学习笔记2

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C学习笔记2

6、inline内联函数

在函数定义前冠以关键字 inline,则该函数就被声明为内联函数每当程序中出现对该函数的调用时,C 编译器使用函数体内的代码代替函数调用表达式。再编译过程替换

使用内联函数代替宏定义,可以消除宏定义的不安全性。内联函数具有宏定义的所有优点而没有缺点

浪费空间、节省时间

简单函数可以加上inline

7、缺省参数的函数

C 在声明函数原型时,可为一个或多个参数指定缺省参数值,以后调用此函数,若省略其中某一参数, C

自动的以缺省值作为相应参数的值

int special(int x=5,float y=5.3);

当进行函数调用时,可以有以下几种形式

1)special(100,79.8)//x=100, y=79.8

2)special(25);//x=25, y=5.3

3)special();//x=5,y=5.3

不能special(,25); 这是错误的

传实参的时候必须从左往右传,在设置缺省值的时候必须从右往左设置,有默认值的参数放在右边;没有缺省值的参数必须传参#include<iostream>

using namespace std;

//函数声明,缺省值在声明处设置

int my_add(int x=10,int y=20);

int main()

{

cout<<"my_add()= "<<my_add()<<endl;

cout<<"my_add(100)= "<<my_add(100)<<endl;

cout<<"my_add(100,200)= "<<my_add(100,200)<<endl;

return 0;

}

//定义函数:一般不设置缺省值

int my_add(int x,int y)

{

return x y;

}

8、函数重载

在传统 c 语言中,函数名必须是唯一的,程序中不允许出现同名的函数; 同一范围内C 中允许出现同名的函数,这种现象称为函数重载,是 C 的多态特性之一

只要函数参数的类型不同,或者参数的个数不同,或者两者兼而有之,两个或两个以上的函数可以使用相同的函数名

函数的重载与返回值没有关系

可以通过调用的参数类型不同决定使用哪个函数

也可以通过传的参数的个数不同决定使用哪个函数

当重载遇上缺省参数:需要人为避免

如果有函数重载,尽量少些缺省参数。如果有缺省参数,尽量少写函数重载

#include<iostream>

using namespace std;

int myAdd(int x, int y = 10);

int myAdd(int x, int y, int z = 100);

int main()

{

int sum1, sum2;

//sum1=myAdd(10,20);//错误这样计算机就不知道调用两个参数的 myAdd 还是三个参数的 myAdd

//函数重载存在二义性

// cout<<"sum1= "<<sum1<<endl;

sum2 = myAdd(100);//正确,只能调用两个参数的 myAdd

cout << "sum2= " << sum2 << endl;

return 0;

}

int myAdd(int x, int y)

{

cout << "in int myAdd(int x,int y) fun" << endl;

return x y;

}

int myAdd(int x, int y, int z)

{

cout << "in int myAdd(int x,int y,int z) fun" << endl;

return x y z;

}

重载函数是根据参数个数或参数类型类确定调用哪一个重载版本的

int mul(int x,int y);

double mul(int x,int y);

这样是不能重载的,重载是根据参数的个数及类型决定的

一般而言,重载函数应执行相同的功能

9、强制类型转换

.c 语言中使用形如 (int )x 的形式

C 中还允许另一种形式:int(x)

以上两种方法 C 都能接受,推荐使用后一种方法

补:

int num=10;//c 的变量初始化风格

int num(100);//c 的变量初始化风格

#include<cstdlib>//以 c 开头,代表 c 语言的库文件

10、new和delete运算符

相当于C语言中的malloc和free

在申请内存的同时可以为该内存空间赋初值

#include<iostream>

int main()

{

int *p1=new int(10);//将 new 申请的空间的内容初始化为 10 *p1=100;

cout<<"*p1= "<< *p1 <<endl;

delete p1;

return 0;

}

不允许数组在new时初始化;释放数组的时候前面加[]

int main()

{

int i;

int *p=new int[5];

for(i=0;i<5;i )

p[i]=i;

for(i=0;i<5;i )

cout<<p[i]<<", ";

cout<<endl;

delete []p;//注意释放数组的时候,前面加[]

相关文档
最新文档