C++笔记
- 格式:doc
- 大小:38.00 KB
- 文档页数:5
第一章概述1.C语言的特点①语言简洁、紧凑,使用方便、灵活。
共有32个关键字,9种控制语句。
②运算符丰富,公有34种运算符。
③数据结构丰富,数据类型有:整型、实型、字符型、数组、指针、结构体、共用体等。
④具有结构化的控制语句(如if…else、while、do…while、switch、for)⑤语法限制不太严格,程序设计自由度大。
⑥允许直接访问物理地址,能进行位(bit)操作,可以直接对硬件操作。
⑦生成目标代码质量高,程序执行效率高。
⑧可移植性好。
2.C语言的用途C虽不擅长科学计算和管理领域,但对操作系统和系统实用程序以及对硬件进行操作方面,C有明显的优势。
现在很多大型应用软件也用C编写。
Top of Page第二章数据类型、运算符与表达式1.C的数据类型C的数据类型包括:整型、字符型、实型或浮点型(单精度和双精度)、枚举类型、数组类型、结构体类型、共用体类型、指针类型和空类型。
2.常量与变量常量其值不可改变,符号常量名通常用大写。
变量其值可以改变,变量名只能由字母、数字和下划线组成,且第一个字符必须为字母或下划线。
否则为不合法的变量名。
变量在编译时为其分配相应存储单元。
3.整型数据整型常量的表示方法:十进制不用说了,八进制以0开头,如0123,十六进制以0x开头,如0x1e。
整型变量分为:基本型(int)、短整型(short int)、长整型(long int)和无符号型。
不同机器上各类数据所占内存字节数不同,一般int型为2个字节,long型为4个字节。
4.实型数据实型常量表示形式:十进制形式由数字和小数点组成(必须有小数点),如:0.12、.123、1230.0等。
指数形式如123e3代表123×10的三次方。
实型变量分为单精度(float)和双精度(double)两类。
在一般系统中float型占4字节,7位有效数字,double型占8字节,15~16位有效数字。
5.字符型数据字符变量用单引号括起来,如'a','b'等。
c语言基础知识笔记
1、定义
函数是一组一起执行一个任务的语句,每个C程序都至少有一个函数,即主函数main(),所有简单的程序都可以定义其他额外的函数。
函数声明告诉编译器函数的名称、返回类型和参数,函数定义提供了函数的实际主体。
2、函数的一般形式
return_typefunction_name(parameterlist)
{bodyofthefunction}
组成部分:
1.返回类型
返回类型:一个函数可以返回一个值。
return_type是函数返回的值的数据类型,有些函数执行所需的操作而不返回值,在这种情况下,return_type是关键字void。
2.函数名称
函数名称:这是函数的实际名称。
函数名和参数列表一起构成了函数签名。
注意:函数名和参数列表一起构成了函数签名,意味着可以出现参数列表不同但是函数名相同的函数。
voidprint()
{printf("helloworld!");}
voidprint(intnums)
{printf("%d\n",a);}
3.参数
参数:参数就像是占位符,当函数被调用时,您向参数传递一个值,这个值被称为实际参数。
参数列表包括函数参数的类型、顺序、数量,参数是可选的,也就是说,函数可能不包含参数。
4.函数主体
函数主体:函数主体包含一组定义函数执行任务的语句。
C语言谭浩强版笔记第一章程序设计和C语言1、计算机能直接识别和接受的二进制代码称为机器指令,机器指令的集合就是该计算机的机器语言。
2、语言的发展历史:①机器语言②符号语言③高级语言3、高级语言的发展:①非结构化语言②结构化语言③面向对象的语言4、C语言的祖先是BCPL语言5、在字符串中的//和/*都不作为注释的开始。
而是作为字符串的一部分。
【但是在vc++6.0中//显示编译错误】6、不要以为在max函数中求出最大值z后就会自动地作为函数值返回调用处,必须用return语句指定将哪个值作为函数值。
也不要不加分析地在所有函数后面都写上return 07、一个程序由一个或多个源程序文件组成8、全局声明:即在函数之外进行的数据声明,在函数外面声明的变量称为全局变量。
例如把int a,b,sum;放到main函数的前面9、函数是C程序的主要组成部分,编写C程序的工作主要就是编写一个个函数10、一个C语言程序是由一个或多个函数组成的,其中必须有且只有一个main函数11、一个小程序只包含一个源程序文件,在一个源程序文件中包含若干个函数(其中一个为main函数),若程序规模太大,可以使一个程序包含若干个源程序文件,每个源程序文件又包含若干个函数【一个源程序文件就是一个程序模块,一个程序分成若干个程序模块】12、在进行编译时是以源程序文件为对象进行的【分别对各源程序文件进行编译得到相应的目标程序,然后再将这些目标程序连接成为一个统一的二进制可执行程序】13、C语言的这种特点使得容易实现程序的模块化14、一个函数名后面必须跟一对圆括号,括号内写函数的参数名及其类型。
如果函数没有参数,可以写void或空括号【如int main(void)或int main()】15、void dump(){}它是一个空函数,但是是合法的16、程序总是从mian函数开始执行的,不管位置在哪儿17、程序中对计算机的操作是由函数中的C语句完成的18、二进制目标程序在visual C++中的后缀为.obj19、可执行程序在visual C++中的后缀为.exe20、一个源程序经过编译后得到的目标程序要经过连接阶段与函数库进行连接才能生成可执行文件21、程序设计的任务:①问题分析②设计算法③编写程序④对源程序进行编辑、编译和连接⑤运行程序,分析结果⑥编写程序文档第二章算法1、对数据的描述:在程序中要指定用到哪些数据类型以及这些数据类型和数据的组织形式,这就是数据结构。
c程序设计读书笔记最近迷上了 C 程序设计,这一钻进去,还真像是走进了一个奇妙的代码世界。
我读的这本书,没有那种让人望而生畏的高深术语,反倒是用一种特别接地气的方式,一步一步地引导我走进 C 程序的神秘大门。
刚开始的时候,我就像一个在黑暗中摸索的小孩,对那些个符号和语法规则感到一头雾水。
比如说,那个简单的“int main()”,我就在心里嘀咕:“这到底是啥意思呀?”但随着一页一页地读下去,慢慢地,好像有一道光照了进来。
书中讲到变量的定义和使用时,那可真是让我有种恍然大悟的感觉。
以前我总觉得变量这东西很抽象,不好理解。
但书上举了个特别好玩的例子,就像是说我们有一个盒子,这个盒子可以装不同的东西,有时候是苹果,有时候是香蕉,而这个盒子的名字就是变量名。
我们通过给这个盒子贴上不同的标签,就能知道里面装的是什么。
比如说,“int num =5;”,这里的“num”就是盒子的名字,“int”表示这个盒子只能装整数,而“5”就是此刻装在里面的东西。
这么一解释,我瞬间就明白了,原来变量就是这么一回事儿!还有指针的部分,一开始我真的被它搞得晕头转向。
书上说指针就像是一个能指向其他盒子的箭头。
我就在想,这箭头到底指向哪儿啊?后来经过书中详细的解释和生动的例子,我才渐渐搞清楚。
比如说,我们有两个变量“int a =10;”和“int p; p =&a;”,这里的“p”就是那个箭头,“&a”表示“a”的地址,也就是说“p”这个箭头指向了“a”所在的位置。
通过“p”,我们就能访问到“a”的值。
这感觉就像是通过一个神秘的通道,直接到达了宝藏所在的地方。
在讲到数组的时候,书里的例子更是让我印象深刻。
想象一下,我们有一排小格子,每个格子都有一个编号,从 0 开始。
我们可以把不同的数据放进这些格子里。
比如说,“int arr5 ={1, 2, 3, 4, 5};”,这就像是在这排小格子里依次放了 1 到 5 这几个数字。
然后我们可以通过“arr0”访问第一个格子里的数字 1,通过“arr1”访问第二个格子里的数字 2,以此类推。
c语言重点笔记C语言重点笔记一、基础语法1.注释:用于解释代码,不会被编译器执行。
单行注释以“//”开头,多行注释用“/* */”包围。
2.变量:用于存储数据。
定义变量时需要指定类型和名称,如int num;赋值时使用等号,如num=10;也可以在定义时进行赋值,如int num=10;3.数据类型:C语言提供了基本的数据类型,包括整型、浮点型、字符型等。
4.运算符:C语言提供了各种运算符,包括算术运算符、关系运算符、逻辑运算符等。
5.控制语句:C语言提供了各种控制语句,包括条件语句、循环语句等。
二、函数1.函数定义:函数是一段可重复使用的代码块。
定义函数需要指定返回值类型、函数名和参数列表。
如int add(int a, int b) { return a + b; }2.函数调用:调用函数时需要使用函数名和参数列表,并根据返回值类型进行接收。
如int result = add(1, 2);3.递归函数:递归是一种特殊的函数调用方式,在函数内部调用自身。
需要注意避免死循环。
三、数组1.数组定义:数组是一组相同类型的数据。
定义数组时需要指定类型和长度,如int arr[5];2.数组初始化:可以在定义时进行初始化,如int arr[5] = {1, 2, 3, 4, 5};3.数组访问:使用下标访问数组元素,下标从0开始,如arr[0]表示数组的第一个元素。
4.多维数组:多维数组是由一维数组组成的。
二维数组可以看作是一个矩阵,定义时需要指定行数和列数。
四、指针1.指针定义:指针是一个变量,用于存储另一个变量的地址。
定义指针时需要指定类型和名称,如int *p;2.指针运算:可以对指针进行加减运算,表示移动指针位置。
3.指针与数组:可以使用指针访问数组元素,如int *p = arr; p[0]表示arr[0]。
4.空指针:空指针是没有被初始化的指针。
五、结构体1.结构体定义:结构体是一种自定义数据类型,可以包含多个不同类型的成员变量。
谭浩强c程序设计笔记大家好呀!今天咱来聊聊谭浩强C程序设计的一些笔记哈。
一、C语言的基础概念。
咱得先搞清楚C语言是啥玩意儿。
C语言那可是编程界的大佬,好多软件、系统啥的都是用它开发出来的。
谭浩强老师的书里就把这些基础概念讲得特别明白。
比如说,变量就是用来存数据的小盒子,不同类型的数据得用不同类型的变量来装,像整型的就用int,浮点型的就用float。
这就好比你装不同东西得用不同的盒子,装书的盒子和装衣服的盒子肯定不一样嘛。
还有常量,这就是固定不变的量,就像圆周率π,它永远都是那个值,不会变的。
这些基础概念就像是盖房子的砖头,你得把它们弄扎实了,后面才能建起高楼大厦。
二、数据类型和运算符。
1. 数据类型。
C语言里的数据类型那可不少。
除了刚才说的整型和浮点型,还有字符型char,用来存单个字符的,像字母、数字啥的。
还有一些更复杂的数据类型,像数组,它就像是一排小盒子,可以存好多相同类型的数据。
比如说你要存一个班同学的成绩,用数组就很方便。
2. 运算符。
运算符就像是数学里的加减乘除一样,不过C语言里的运算符更丰富。
有算术运算符,像加、减、乘、除这些,还有关系运算符,用来比较大小的,像大于、小于、等于这些。
还有逻辑运算符,像与、或、非,这在判断条件的时候可有用啦。
比如说你要判断一个数是不是既大于10又小于20,那就得用到逻辑与运算符啦。
三、程序的控制结构。
程序可不能瞎跑,得有个指挥它的东西,这就是程序的控制结构。
1. 顺序结构。
这是最简单的,就是按照代码的顺序一行一行地执行,就像你走路一样,一步一步来。
2. 选择结构。
这就有点像岔路口啦,根据不同的条件选择不同的路走。
比如说你要判断一个人的成绩,如果大于60分就输出“及格”,小于60分就输出“不及格”,这就得用到选择结构,一般用if语句或者switch语句来实现。
3. 循环结构。
有些事情得反复做,这时候循环结构就派上用场啦。
比如说你要计算1到100的和,总不能一个一个加吧,那就得用循环。
赵海英c语言笔记嘿呀,咱这就来聊聊赵海英的C语言笔记哈。
一、赵海英笔记里的C语言基础部分。
咱都知道,C语言那可是编程界的大佬语言之一呀。
在赵海英的笔记里,对基础部分那是讲得相当细致。
就说数据类型吧,像int那是用来表示整数的,比如说咱要记录班级里同学的人数,就可以用int类型的变量。
float和double呢,就是用来处理小数的啦,像计算商品的价格,可能就会用到float或者double类型。
还有char 类型,专门用来处理字符的,比如存储一个人的名字里的单个字符。
再说说变量和常量。
变量就像是一个小盒子,你可以随时往里面放东西,也可以随时把东西拿出来,它里面的值是可以变的哟。
常量呢,就不一样啦,它一旦被定义了,就不能再改变啦,就像圆周率π,它的值是固定的,在程序里咱就可以把它定义成常量。
二、C语言的控制语句部分。
这部分在赵海英的笔记里也是重点呐。
先讲讲if语句吧,它就像是一个交通警察,根据不同的条件来指挥程序往不同的方向走。
比如说,如果你的考试成绩大于60分,那就输出“及格啦”,如果小于60分,那就输出“还得加油呀”。
for循环语句那可是个勤劳的小助手。
比如说你要计算1到100的和,用for循环就很方便啦。
它会按照你设定的条件,一次次地重复执行某段代码,直到不满足条件为止。
while循环语句也很厉害哟。
它就像是一个执着的家伙,只要条件满足,就会一直不停地执行代码。
比如说,你要让程序一直等待用户输入正确的密码,直到输入正确为止,这时候while循环就派上用场啦。
三、C语言的函数部分。
函数在C语言里那可是相当重要的角色哈。
它就像是一个小工具包,你可以把一些常用的功能封装到一个函数里,以后需要的时候直接调用就好啦。
比如说,你写了一个计算两个数相加的函数,以后只要需要计算两个数相加,就不用再重新写一遍代码啦,直接调用这个函数就行。
在赵海英的笔记里,对函数的参数传递也讲得很清楚呢。
有值传递和地址传递两种方式。
C学习笔记一C语言和汇编语言的区别C语言和汇编语言是计算机编程中常见的两种语言,它们在编写程序时有着不同的特点和用途。
本文将从语法、可读性、抽象程度以及机器依赖性等方面对C语言和汇编语言进行比较,以帮助读者更好地理解它们之间的区别。
1. 语法差异C语言是一种高级编程语言,它采用类似英语的结构化语法,具有丰富的语法特性,包括变量、数组、条件语句、循环语句和函数等。
C语言的语法相对简洁,能够快速实现一些功能。
而汇编语言是一种低级编程语言,使用各种助记符和符号来表示机器指令、寄存器和内存访问等,需要编写者有较强的硬件知识和技巧。
相比C语言,汇编语言更接近计算机底层,更加底层、精简和直接。
2. 可读性和可维护性C语言的语法结构和语义更加接近自然语言,代码具有较好的可读性和可维护性。
由于C语言的抽象程度较高,程序员可以更快速地理解代码,并进行修改和维护。
同时,C语言具有模块化的特点,程序可以按模块进行组织,便于团队协作开发。
相比之下,汇编语言的语法和符号较为晦涩,阅读和理解汇编代码需要具备较深的计算机体系结构和指令集的知识。
汇编语言编写的程序通常较为底层,代码行数相对较多,可读性和可维护性较差,需要更高的技术水平和耐心。
3. 抽象程度C语言是一种高级语言,提供了丰富的语法特性和抽象层次,为程序员提供了更方便和高效的编程方式。
C语言可以在不同的计算机平台上进行移植,并且可以通过调用库函数实现复杂的操作,具备良好的抽象能力。
汇编语言是一种低级语言,提供了直接操作硬件的能力。
汇编程序员可以直接访问寄存器、内存等底层资源,实现对计算机的精细控制。
汇编语言相对于C语言来说更接近机器语言,具有更高的执行效率和更大的灵活性。
4. 机器依赖性C语言是一种面向过程的编程语言,编写的程序相对独立于具体的硬件平台,具有较好的可移植性。
通过编译器的编译,C语言可以在不同的操作系统和计算机上运行。
汇编语言则直接操作底层的机器指令和寄存器,与具体的硬件平台密切相关,不同的计算机架构和操作系统可能需要不同的汇编代码。
C语言笔记第一章程序设计基本概念1.C语言是一种结构化的程序设计语言。
2.C语言中没有子程序的概念,它提供的函数可以完成子程序的所有功能。
3.C语言允许对函数进行单独编译,从而可以实现模块化。
第二章 C语言设计的初步知识1.C语言的模块化主要是通过函数实现的。
2.C语言有高级语言和低级语言的功能,技能编写系统软件,又能编写应用软件3.程序中main()是主函数的起始行,也是C程序执行的起始行。
4.一个C程序总是从主函数开始执。
5.分号是C语句的一部分,不是语句之间的分隔符。
6.程序中“﹟include 〈stdio.h〉”通常称为命令行,命令行必须用“﹟”号开头,行尾不能有“;”号,它不是C程序中的语句。
7.标识符必须由字母、数字和下划线组成,,并且第一个字符必须是字母或下划线。
8.在C语言中,大写字母和小写字母被认为是两个不同的字符。
9.C语言标识符分为三类:关键字、预定义标识符和用户标识符。
10.常量分为数值型常量(整型常量(短整型、基本整型、长整型、无符号型)和实行常量)、字符型常量和字符串常量。
11.一个变量实际上代表了内存上的某个存储单元。
12.对变量的定义通常放在函数体内的前部,但是也可以放在函数的外部和复合语句的开头。
13.十六进制中的a、b、d、e、f既可以是小写也可以是大写。
14.在C语言中,只有十进制可以是负数,八进制和十六进制只能是整数。
15.整型变量只能存放整型数值。
16.C语言规定,可以在定义变量的同时给变量赋初值,也称变量初始化。
17.无符号常量不能表示成小于0的负数。
-200u是不合法的。
18.如果一台计算机以两个字节(16个二进制位)来存放一条计算机命令,则称此计算机的字长是16位。
19.通常把一个字节中的最右边一位称为最低位,最左边一位称为最高位。
对于一个有符号整数,其中最高位(最左边一位)用来存放整数的符号,称为符号位。
正整数最高位放0,负整数最高位放1.20.负整数在内存中是以“补码”的形式存在的。
Date&Date::operator++()
{
nextDay();
return *this;
}
Date Date::operator++(int)
{
Date d(*this);
nextDay();
return d;
}
Const string& getname() const {return name;}
运算符重载
Operator函数
执行(x1++)-(++x2)解释为
X1.(Operator++(int)).operator-(X2.operator++)
继承
基类派生类
父类子类
三种类型
--派生类自动具有了基类所有数据成员和成员函数,在此之上还可以加入新的数据成员和函数。
--基类具有所有派生类的共同特征。
实现类的层次性。
层次结构:
1、单一继承,从一个基类派生
2、多重继承,从多个基类派生,具有多种共同特征
几个类具有相似的结构则可以定义一个基类
Class 派生类名:继承类型基类名
{}
Public 公有继承
Private 私有继承
Protected 保护继承
派生类访问权限受可见性限制
Private只能被基类成员和友元访问
派生类成员函数不能访问基类私有成员
Public可以被任何函数访问
Protected具有部分可见性
基类的protected只能被基类成员函数友元和派生类的成员函数友元访问
修改导致派生类成员全部修改
好吧基类成员和派生类重名是不同的数据成员
基类友元函数只能访问派生的公有、保护和基类的所有
派生友元函数只能访问派生的全部和基类的公有、保护
普通函数只能访问公有的
派生类中的构造和析构函数
构造函数调用顺序:
基类成员-》基类-》派生类成员-》派生类
派生类的构造函数可以调用基类的构造函数
(如果派生类中没有构造函数,就默认调用基类的构造函数)
后创建的先析构,先创建的后析构。
继承层次
Class A{};
Class B{};
A a1,*pa=&a1;
B b1,*pb=&b1;
Pb不能指向a。
Pa可以指向b;
指针pa只能指向A类对象,pb只能指向B类对象。
派生类的指针不能指向基类的对象,但基类的指针可以指向派生类的对象,但不可以通过指针访问不属于基类的成员。
Pa是A基类的指针,因此就不能调用派生类中的函数,即使它指向的是派生类的成员,Pa 只能调用基类的成员。
根据指针类型判断,与指向对象类型无关。
Pb=static_cast<B*>(pa);
显示类型转化将基类指针转化成派生类指针。
派生类对象和基类对象不能互相赋值。
复合
复用已有代码
复合:整体和部分的关系,整体拥有部分
]继承:一般与特殊的关系,派生类是一种基类,可以支持多态。
继承类型决定了基类数据成员在派生类中的可见性。
多重继承,多个基类:
c.A::show();基类A中的show函数
c.show();派生类自己的show函数
在成员名前用类名进行限定(类名::成员名)
虚拟继承。
虚基类。
Class 派生类名:访问控制基类名,virtual 访问控制基类名{};
有虚的先构造虚继承。
多重继承构造函数调用
先基类,在成员,在自己。
先虚基类后非虚。
多态:
实际加入的信息都是派生类。
学生类保存了课程类指针,实际指向派生类对象
基类指针无法使用派生类信息
为访问派生类成员,强制类型转换
运行时类型信息RTTI
#include<typeinfo>
获得类型信息:typeid
将基类指针引用转换成派生类指针:
Dynamic_cast转换运算符
需进行如下设置:
Project->settings->c++->language enable run time type information
If(typeid(派生类类型)==typeid(数据成员))
//返回该变量运行期所属的类信息
{…
Dynamic_cast<派生类类型&>(数据成员)
//将变量名所属类型转换为目标类型,用于基类和派生类之间的安全转换,然后再调用
}
在基类中添加
getScore() const;
无法获得正确的成绩信息;
函数调用只与指针类型有关,只能调用基类的
使基类指针的调用根据对象的不同类型实现不同的代码,就是多态
同一函数接口有不同的实现,
封装,继承,多态。
面向对象三个基本特征。
在C++中通过虚函数来实现多态。
虚函数定义:
Virtual 返回类型成员函数名(参数列表)
虚函数(virtual function):是一种动态的函数重载的方式,它允许函数调用与函数体之间的联系在运行时才建立;这样可以根据运行时所指向的不同对象来调用不同的函数体
函数调用只能调用基类代码
LegoSystem::ProcessColor(){
color->Process();
//利用多态特性,自动调用相应代码,
//而不需要知道具体颜色
};
Color{public:
virtual void Process(); //虚函数实现多态
}
void Red::Process() { RedProcess();}
void Green::Process() { GreenProcess();}
void CYellow::Process() { Y ellowProcess();}
虚函数必须是类的成员函数,非成员函数不能说明为虚函数
一旦函数在基类中被声明为虚函数,即使在派生类中重新定义类时没有声明虚函数,那么它从该点之后的继承层次结构中都是虚函数
虽然在类层次结构的高层中声明为虚函数会使它在低层隐式地成为虚函数,但为提高程序可读性应在下面的每一层次中显式声明为虚函数
没有定义虚函数的派生类简单地继承其直接基类的虚函数
静态成员函数不能定义成虚函数
只有虚函数才支持多态调用,普通成员函数的调用规则只与指针类型相关
宏
#define area(r)((r)*(r)*pi)
宏中定义的变量可以用表达式代替。