C++学习宝典(笔记)(5)

2019-07-13 16:41

函数调用:(用到变量的引用,用到数组名,作为参数)

是实参中的数据复制一份传到形参中,称为值传递,而值传递是单向的。

&引用:就是给起了个别名,共用同一个内存空间//注意:凡跟在类型后面的就不是运算符 引用不分配空间,总是跟初始化它的变量用同一块内存空间,如果初如化的不是变量,要加const

如const int& d=888;//但没有任何意义

引用必须使用之前必須要初始化,而且终生不变 int main() {

int a=13;

int& c=a;//引用:

cout<<\ a=14;

cout<<\ cout<<\ return 0; }

引用作为形参--------------(以下是使用方法), 形参中使用实参的引用:可以使形参与实参共用同一个内存空间 区别以下两个子函数

Person setdata(Person p,string s,bool b,int n,double d) {

p.name=s; p.gender=b; p.age=n; p.salary=d;

return p;//必加这一句,因为是传递是单向的,如无返回值P不会给p1 }

主函数中p1=setdata(p1,\陈宗权\

void setdata1(Person& p,string s,bool b,int n,double d)//引用,实现双向传递 {

//这里的形参引用是用实参来初始化Person& p=p1; p.name=s; p.gender=b; p.age=n; p.salary=d; }

主函数中setdata(p1,\陈宗权\

静态局部变量static int n=0;//, 初始化只在每一次调用它的时候初始化一次,它的空间直到程序结束才释放;

(写在函数中,所以是局部的,作用范围也只是在定义他的函数中)

引用作为返回值类型---------------(方法如下) int& count() {

static int n=0;//静态局部变量, 初始化只在每一次调用它的时候初始化一次,它的空间直到程序结束才释放; ++n;

return n; }

int main() {

for(int i=0;i<3;i++) {

cout<

count()=0;//正确:因为返回的是引用:实质全局静态变量可以达到这个目的,但尽量少用全局变量

for(int i=0;i<3;i++) {

cout<

return 0; }

如果n不是static,在主函数中使用count()=0 错误 :因为n已经释放了,还要引用空间中的值所以错误

如果int& count(){}不用&,错误因为return()带回一个值时,是每次返回时,到值复制到一个临时空间作为结果;

但返回的是引用,即返回值是n的引用时,这句就可以,达到归0的目的 cout<<&count()<

函数调用时实参是数组----------总要传递两个参数一个是数组名,一个是数组的个数

注意swap(任何基本类型元素1,任何基本类型元素2);//可直接使用。这是系统已经定义好的函数

函数的声明,

1 放在函数定义最上面,也可以在一个函数里面声明另一个函数

2,函数声明时,形参的名子可写可不写 3,必加;号

*********************2010年09月10日 星期五 09时04分05秒 (第六天)*********************************** 递归:recursive

在调用一个函数过程中又出现直接或间接地调用该函数本身(函数在实现过程中调用自已)

重载----------------------------同一个函数名多次使用

函数的重载:overload(就是一个名字定义多个函数,这些函数的参数个数和参 数类型不同) 就是说重载:要有不同的参数表(即1、参数的个数,参数的类型,参数的顺序不同),函数参数表与返回类型无关。

编译器会根把参数的个数,和参数的类型 ,形参的顺序不同来区分调用哪一个函数

汇编中call函数名,所以发生冲突,而C++会在编译时对其名子进行更改

测试:可在 函数前加extern \定义函数部分。表明采用C的方法,不可以改名,编译就无法通过

void printtime(int hour,int minute=0,int second)=0 形参的默认值:在调用函数时有默认值的形参,可以不传值---------------减少工作量

定义规则:没有默认值的形参,定义时要靠右,

传参总是依次传递,不能中间跳过某个参数,即使中间有提示如14,,20 如声明与定义分开,只允许在声明中指名默认值,定义时不允许 /*

模板与函数重载的区别:

1 函数模板:比函数重载更方便 ,程序更简洁。它适用于函数体相同,函数的参数个数相同,参数类型不同的情况

如参数个数不同不能用函数模板。

2 函数重载:是定义多个函数,但函数名相同,参数个数可不同,返回类型 可不同,参数类型 可不同

但不能只有函数类型 不同,而参数的个数和类型 相同如 int f(int); long f(int); void f(int) */

如运算符也可以重载:<< >>即是位移,又作为输出插入运算符,和输入提取运算符

堆:heap,

栈:stack,栈中临时变量和局部变量,形参

内联函数:(inline):-----------申请嵌入到主调函数中,为提高程序的执行效率

就是在编译时将所调用函数的代码直接嵌入主调函数中,而不是将会流程转 出去,这种嵌入到主调函数中的函数称为内置函 数。也称内联函数。

方法:如 inline int max(int a,int b)//在函数定义时请求内存做为内联函数

注意:原则上不要声明,直接定义,内联函数中不能所括复杂的控制语句,如循环,switch. 总之只有那那些规模较小,而又被频繁调用的简单函数才适合声明inline.

注意,string可以带回返回值,而 char[]不可以

*********************************************************************************************

多个文件怎么合成一个文件,也可以起到保密作用 mkdir project

目录:src: 1,io.cpp 2,char.cpp main.cpp io.h char.h

g++ -c main.cpp io.cpp char.cpp 得到 main.o,io.o,char.o

main.o,io.o,char.o io.h char.h可以给别人---这样就不泄露原代码----别人可以g++ *.o就可以执行通过

char.h中可以放如下内容---头文件:放函数声明,全局变量的声明extern int g;,类型的定义。

void upper(char str[]); void IsLower(char c); void ToUpper(char& c);

extern int g;//声明有一个外部全局变量, typedef int zhengshu; enum Color{RED,BLACK}; struct x{};

用到自定义类型就加声明自定义类型的头文件------这样会造成同名的自定义类型重复定义,发生冲突

每个头文件都这要用这个框架--------编译时防止同名的自定义类型重复定义 #ifndef 头文件名_H //如果没有定义头文件名_H 这个名字就#define TANJIE

#define 头文件名_H 用户自定义类型 #endif

作业:能用重载(几个函数)实现大数运算。(+-*/任选其一),如大数的十进制形式在

30位以内(而int只有十位),表示形式用字符数组来存储, 运算用op来表示

void operate(char d1[],char d2[],char result[]) void operate(char d1[],int d2[],char result[]) void operate(int d1[],char d2[],char result[])

从键盘输入一些超大数据分别试试这些函数。注意int传值不要超过2的30次方-1

//注意:最好不要有在.h中有新类型名的定义,和全局变量声明的定义,可是只作声明。然后在某个.cpp文件中定义

extern int g;//声明有一个外部全局变量, static 用在函数定义和全局变量前面,表明只许在定义它的本文件中访问。static 用在函数声明处 表明只能在定义处访问) static int g;

(前面用到的static 是静态局部变量。)

typedef int zhengshu;

变量的存储类别

作用域:是变量的一种属性,从空间角度又分为全局变量与局部变量

存储期(生命期):指变量在内存中的存在期间。的时间角度来分析,存储期分为静态存储期和动态存储期。

*********************************************************************************************

*********************2010年09月13日 星期一 08时37分26秒 (第七天)**********************************

区别:变量的指针|:一个变量的地址称为该变量的指针

指针变量:一个变量用来存放另一个变量的地址(即指针)则称为指针变量。 输出字符址址:不是地址,是一个&c开始,找'\\0'的字符串,所以是乱码


C++学习宝典(笔记)(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:美学概论试题及答案1

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: