C++学习笔记.docx

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

C++学习笔记.docx

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

C++学习笔记.docx

C++学习笔记

C++笔记      2007-3-22

1、程序——可执行文件,人发送给计算机的一组指令。

        硬件指令是二进制,方便与数字电路和指令集转换。

2、我们学的是符合ANSI规范的标准C++,有可移植性

3、进制:

十进制->二进制:

除2取余88->01011000

      二进制->十进制:

各个位与权重的乘机,之后的总和

      01011000->8+16+64->88

      十进制->十六进制:

除16取余88->0x58

4、1byte=8bit

        1kb=1024byte

        1M=1024kb

5、开发周期

        源程序-->可执行代码-->可执行程序-->调试-->运行

                   

(1)                       

(2)

    

(1)编译:

生成自己的可执行代码(缺少库函数代码)

    

(2)连接:

与系统的可执行代码合到一起

    源文件后缀:

”.cc”,”.cp”,”.cpp”

6、第一个C++程序

    #include  < iostream >                        ----“#”表示预编译选项,<>为一个头文件,其中有常用函数

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

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

        cout<<"HelloWorld"<

        return0;

    }

% g++ -c hello.cc    ----编译生成目标文件hello.o

    % g++ hello.o    ----连接生成可执行文件

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

    % a.out    ----执行可执行文件

% g++  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&&c<=90){

returnc+32;

}else{

returnc;

}

}

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

main.cc

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

#include

#include"change.h"

usingnamespacestd;

intmain(){

charc='0';

while

(1){

cout<<"enterachar[0exit]>";

cin>>c;

if(c=='0'){

break;

}

cout<<"====>"<

}

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"文件中

把多个".cc"文件编译成可执行文件->分别编译成".o"文件,再连接到一起

2、值传递

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

3、作业分析:

显示层(与用户的交互)

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

数据(id,password,balance)

 

Bank实现代码

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

biz.cc

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

//operation

/*p:

Passwordofaccount.

*b:

balanceofaccount.

*return:

idofaccount.

*/

longcreate(intp,doubleb);

voidsave(doublesum);

/*

*return:

0success,otherwise-1returned.

*/

intwithdraw(intp,doublesum);

doublequery(intp);

longgenerateId();

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

biz.cc

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

staticlongid;

staticintpasswd;

staticdoublebalance;

#include

usingnamespacestd;

longgenerateId(){

staticintid=1;

returnid++;

}

longcreate(intp,doubleb){

id=generateId();

passwd=p;

balance=b;

returnid;

}

voidsave(doublesum){

balance+=sum;

}

intwithdraw(intp,doublesum){

if(p!

=passwd){

cout<<"invalidpassword."<

return-1;

}

if(balance<(sum+10)){

cout<<"noenoughmoney."<

return-1;

}

balance-=sum;

return0;

}

doublequery(intp){

if(p!

=passwd){

cout<<"invalidpassword"<

return-1;

}else{

returnbalance;

}

}

 

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

menu.h

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

intshowMenu();

voidcreateMenu();

voidsaveMenu();

voidwithdrawMenu();

voidqueryMenu();

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

menu.cc

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

#include"biz.h"

#include

usingnamespacestd;

intshowMenu(){

cout<<"create------>1"<

cout<<"save------>2"<

cout<<"withdraw---->3"<

cout<<"query------->4"<

cout<<"exit-------->0"<

cout<<"enteryourchoice>";

intc;

cin>>c;

if(!

cin){

return-1;

}else{

returnc;

}

}

voidcreateMenu(){

intpasswd;

doublebalance;

cout<<"\tenterpassword>";

cin>>passwd;

cout<<"\tenterbalance>";

cin>>balance;

longid=create(passwd,balance);

cout<<"======================"<

cout<<"createaccountok,id="<

cout<<"======================"<

}

voidsaveMenu(){

doublesum;

cout<<"\tentersum>";

cin>>sum;

save(sum);

cout<<"======================"<

cout<<"savemoneyok"<

cout<<"======================"<

}

voidwithdrawMenu(){

intpasswd;

doublesum;

cout<<"\tenterpassword>";

cin>>passwd;

cout<<"\tentersum>";

cin>>sum;

intret=withdraw(passwd,sum);

if(ret==0){

cout<<"========================"<

cout<<"withdrawsuccessful."<

cout<<"========================"<

}

}

voidqueryMenu(){

intpasswd;

cout<<"\tenterpassword>";

cin>>passwd;

doubleret=query(passwd);

if(ret!

=-1){

cout<<"============================"<

cout<<"BLANCE:

$"<

cout<<"============================"<

}else{

cout<<"============================"<

cout<<"invalidpassword"<

cout<<"============================"<

}

}

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

main.cc

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

#include

#include"menu.h"

usingnamespacestd;

intmain(){

intc=0;

do{

c=showMenu();

if(c==-1){break;}

switch(c){

case1:

createMenu();

break;

case2:

saveMenu();

break;

case3:

withdrawMenu();

break;

case4:

queryMenu();

break;

case0:

cout<<"===================="<

cout<<"GoodBye"<

cout<<"===================="<

break;

default:

cout<<"===================="<

cout<<"invalidoption,tryagain.";

cout<

cout<<"===================="<

break;

}

}while(c!

=0);

return0;

}

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

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