C++学习笔记Word格式.docx

上传人:b****7 文档编号:21929741 上传时间:2023-02-01 格式:DOCX 页数:78 大小:48.73KB
下载 相关 举报
C++学习笔记Word格式.docx_第1页
第1页 / 共78页
C++学习笔记Word格式.docx_第2页
第2页 / 共78页
C++学习笔记Word格式.docx_第3页
第3页 / 共78页
C++学习笔记Word格式.docx_第4页
第4页 / 共78页
C++学习笔记Word格式.docx_第5页
第5页 / 共78页
点击查看更多>>
下载资源
资源描述

C++学习笔记Word格式.docx

《C++学习笔记Word格式.docx》由会员分享,可在线阅读,更多相关《C++学习笔记Word格式.docx(78页珍藏版)》请在冰豆网上搜索。

C++学习笔记Word格式.docx

usingnamespacestd;

----命名空间,用到的全局变量都是个空间的

intmain(){ 

----主函数,每个C++程序都必须要有的函数,是程序执行的入口,main函数结束则程序结束

cout<

<

"

HelloWorld"

endl;

----“cout”是一个全局变量,代表标准输出设备;

“<

”输出运算符,输出到标准输出设备上;

"

endl"

换行符,与”\n“效果相同

return0;

}

g++ 

-c 

hello.cc 

----编译生成目标文件hello.o

g++ 

hello.o 

----连接生成可执行文件

-o 

hello 

----连接生成可执行文件并指定可执行文件名字及生成目录(可执行文件默认为a.out)

a.out 

----执行可执行文件

hello.cc 

----直接生成可执行文件(目标文件hello.o在内存中生成)

运行可执行文件要在.bash_profile文件中配制PATH环境变量,加上当前路径“.”,用“:

”分隔

7、注释

多行注释/*...*/

单行注释//

8、头文件

#include<

>

系统头文件 

#include"

自定义的头文件

9、变量

用于存储数据,每个变量都要有类型和名字

使用变量:

(1)声明:

确定变量类型及名字;

(2)赋值,第一次的赋值称为初始化

用双引号保存的是字符串,用单引号保存的是字符 

计算机保存字符,是保存的字符对应的ASCII码。

对字符的声明 

charc;

c='

a'

;

对字符数组的声明 

charname[]="

Mary"

---字符数组用“=”赋值,必须在初始化时候

C++笔记(day02)2007-3-23

1、%ldd可行文件的名字;

---可查看连接库

2、C++严格区分大小写,变量命名只能使用字母,数字,或下划线,第一个字母必须使用字母或下划线

3、float单精度,double双精度

sizeof(int)---返回int在内存中占的大小

size(bool)=1

size(char)=1

size(short)=2

size(int)=4

size(long)=4

size(float)=4

size(double)=8

无符号的数据一旦溢出,将成为0。

有符号的int最大值2147483647,益处变为最小值,负数

4、不同数据间赋值:

有兼容性的,占空间小的数据类型,可以给占空间大的数据类型赋值

不兼容的,可能会造成数据丢失。

int->

float可以转换;

float->

int小数部分丢失

5、运算符

要求数据类型要相同

i++先用后加

++i先加后用

布尔运算符号:

结果真或假

逻辑运算符:

做bool运算!

(1)“与”运算&

&

,两条件要同时成立

(2)“或”运算||,只要有一个条件是真,就成立

6、按位与“&

”有0则与的结果为0

按位或“|”有1则或的结果为1

按位异或“^”两位不同则为1,相同为0

7、左移“<

左移1相当于乘以2

右移“>

右移1相当于除以2

8、三目运算符

条件?

真:

9、返回变量---表达式可以再次赋值,赋值语句返回变量本身eg:

(a=10)=20

返回变量的值---不可再次赋值eg:

(a+5)=10

左值:

变量、赋值表达式,++i的返回值是左值

右值:

不能放在“=”左边的是右值,i++的返回值是右值

常量要在声明时就赋值,并且不能修改

10、流程控制

while(条件){循环体}条件成立,则进入循环,知道条件为假时,退出循环

(1)声明循环变量

(2)while()确定循环条件

(3)循环变量要有所变化,避免形成死循环

for(变量初始化;

条件;

变量的变化){循环体代码}

开始时判断循环条件是否成立,循环结束后,到第三个条件,使用变量改变

do{循环体}while(条件);

先执行一次,再判断条件,选择是否继续执行循环

break;

跳出循环,执行循环之外的下一条语句

continue;

从次处开始,结束本次循环,进行下一次循环

11、课堂练习---求1到100之间的所有素数

C++笔记(day03)2007-03-26

1、cin输入流一旦破坏,就不能恢复

2、函数:

一段相关代码组成的集合,以便完成一个特定的目的。

(1)可以通过名字来使用,曾强了代码的可重用性。

(2)提高可维护性。

3、函数定义=声明+函数体:

返回类型>

函数名(<

参数表>

...){

return...

函数返回值:

只有在调用函数的同时才能保存返回值

函数定义时,小括号里的参数称为形参,在函数被调用的时候才有意义。

函数调用时,小括号里的被传入的参数称为实参。

4、函数在调用之前只有声明就可以,因为在编译阶段,参照声明可以完成语法上的检测。

函数声明<

...);

声明与定义的分离,实现并行开发!

5、全局变量,局部变量

局部变量:

函数内部声明的变量,只能在它声明的函数内部使用。

如果没有对其初始化就使用,则其值为垃圾数字。

全局变量:

能被所有的函数共同使用,要声明在所有函数(包括main函数)之外。

尽量少使用,影响太大。

如果没有对其初始化就使用,系统默认为其初始化为0。

6、数据区:

只存放全局数据,数据区的数据是稳定的,程序启动时,即创建,程序结束时,才消失

堆区

代码区

栈区:

存储局部变量。

插入数据从栈顶插入,先进后出结构。

如果函数不调用的话,局部变量是不存在的

在main函数与其他函数之间有个标记,一旦函数返回,栈顶下落到标记处

栈中的数据是变化频繁的

函数调用时创建,函数返回即消失

7、值传递

函数调用并不是传递实参本身,而是创建一个临时变量传到函数中

(1)为形参创建一个临时变量,临时变量的值是拷贝实参的值

(2)对形参的使用,实际上是对临时变量的使用,不会改变实参的大小

8、默认参数

(1)area(floata,floatb=10);

当只传递一个参数时,形参b的位置默认为10

(2)有默认值的形参靠右摆放

9、内联函数

声明时加“inline”,运行效率高,不支持结构控制语句,必须先定义,不支持函数原形。

10、递归函数

在函数内部自己调用自己。

必须有明确的返回条件----递归的出口

11、函数重载

(1)函数名相同。

(2)参数表不同(参数个数不同,参数类型不同,参数顺序不同)。

(3)与参数名和返回类型不关

调用时会根据参数表匹配自动调用相应的函数

编译之后,函数的名字都会发生改变,后面会加上形参缩写作为后缀,没有任何函数的名字是一样的

不会做自动类型提升

对重载的函数最好不使用参数默认值

12、const

在函数内部不允许修改此形参

13、需求分析、设计、代码实现

多文件示例:

=========================================

chang.h

charchange(char);

chang_impl.cc

charchange(charc){

if(c>

=97&

c<

=122){

returnc-32;

}elseif(c>

=65&

=90){

returnc+32;

}else{

returnc;

main.cc

#include<

iostream>

#include"

change.h"

intmain(){

charc='

0'

;

while

(1){

cout<

enterachar[0exit]>

cin>

c;

if(c=='

){

====>

change(c)<

endl;

return0;

===========================================

14、外部变量和内部变量

外部变量:

externintg;

----声明外部变量,引入一个变量,在别的源程序中声明

内部变量:

在源文件中声明的变量

外部变量肯定是一个全局变量!

作用域生命周期存储位置

全局变量(外部变量)所有函数程序启动->

程序结束数据区Data

局部变量函数内部函数开始调用->

函数返回栈Stack

静态局部函数中第一次调用函数时(只被初始化一次)->

程序结束数据区---只需要一份数据,并且不希望别的函数访问他

静态全局本源文件中程序开始->

程序结束数据区

作业:

实现银行业务=========a.cc==================

longid;

intpassword;

doublebalance;

long(id)create(balance,password);

//创建账户

voidsave(sum);

int(staus0,-1)withdraw(sum,password);

floatquery();

===================================

generatorId();

//得到唯一的ID号

intshowMenu();

//现实主菜单

saveMenu();

//收集开户信息,然后调用创建账户

createMenu();

withdrawMenu();

queryMenu();

***今日重点:

(1)形参和实参的区别

(2)递归

(3)函数重载

练习:

观察费波拉切数列1,1,2,3,5,8,13,21,34......第一项和第二项都是1,后面的每一项是前面相邻两项的和。

使用递归方法计算第n项的费波拉切数列结果。

C++笔记2007-03-27

1、程序由函数组成,函数只完成自己特定的功能即可

把函数声明写在头文件里(想使用函数时,可直接导入头文件,调用函数),把函数实现写在"

.cc"

文件中

把多个"

文件编译成可执行文件->

分别编译成"

.o"

文件,再连接到一起

2、值传递

函数中的参数传递是值传递,形参只是实参的一份拷贝数据,在函数中改变形参的值,对实参无影响

3、作业分析:

显示层(与用户的交互)

操作数据(完成业务逻辑)biz层

数据(id,password,balance)

Bank实现代码

================================================================

biz.cc

//operation

/*p:

Passwordofaccount.

*b:

balanceofaccount.

*return:

idofaccount.

*/

longcreate(intp,doubleb);

voidsave(doublesum);

/*

0success,otherwise-1returned.

intwithdraw(intp,doublesum);

doublequery(intp);

longgenerateId();

staticlongid;

staticintpasswd;

staticdoublebalance;

longgenerateId(){

staticintid=1;

returnid++;

longcreate(intp,doubleb){

id=generateId();

passwd=p;

balance=b;

returnid;

voidsave(doublesum){

balance+=sum;

intwithdraw(intp,doublesum){

if(p!

=passwd){

invalidpassword."

return-1;

if(balance<

(sum+10)){

noenoughmoney."

balance-=sum;

doublequery(intp){

invalidpassword"

returnbalance;

menu.h

voidcreateMenu();

voidsaveMenu();

voidwithdrawMenu();

voidqueryMenu();

menu.cc

biz.h"

intshowMenu(){

create------>

1"

save------>

2"

withdraw---->

3"

query------->

4"

exit-------->

0"

enteryourchoice>

intc;

if(!

cin){

voidcreateMenu(){

intpasswd;

doublebalance;

\tenterpassword>

passwd;

\tenterbalance>

balance;

longid=create(passwd,balance);

======================"

createaccountok,id="

id<

voidsaveMenu(){

doublesum;

\tentersum>

sum;

save(sum);

savemoneyok"

voidwithdrawMenu(){

intret=withdraw(passwd,sum);

if(ret==0){

========================"

withdrawsuccessful."

voidqueryMenu(){

doubleret=query(passwd);

if(ret!

=-1){

============================"

BLANCE:

$"

ret<

menu.h"

intc=0;

do{

c=showMenu();

if(c==-1){break;

}

switch(c){

case1:

case2:

case3:

case4:

case0:

===================="

GoodBye"

default:

invalidoption,tryagain."

}while(c!

=0);

4、数组

(1)声明数组<

元素类型>

数组名[元素个数]intintArray[100];

-->

intArray是个集合,有100个元素,每个元素都是int类型的

(2)初始化数组

(3)使用通过数组的下标来访问数组中的元素,下标从0开始intArray[0]=100;

intArray数组中的第一个元素赋值为100

数组声明时,元素个数必须是常量表达式

数组声明带有初始化,则可直接为数组赋值

在数组声明时,必须指明数组长度,若在声明时候初始化,数组长度可省

inta1[2]={100,200};

长度2

inta2[]={5,6,7};

长度3

对于数组中的元素个数,比声明时的多,则会报错,这样的越界访问,对整个程序来

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 广告传媒

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1