C学习笔记
《C++程序设计》学习笔记总结 - 第八章 文件操作
第八章文件操作
一、文件基本概念和文件流类
文件基本概念和文件流类
从不同的角度来看待文件就可以得到不同的文件分类。C++根据文件数据的编码方式不同分为文本文件和二进制文件。根据存取方式不同分为顺序存取文件和随机存取文件
所谓“文本文件”和“二进制文件”是从文件格式的角度进行分类,是约定俗成的、从计算机用户角度出发进行的分类。
所谓的“顺序存取文件”和“随机存取文件”是根据访问文件中数据的方式来
划分的。顺序存取文件就是按照文件中数据存储次序进行顺序操作,为访问第i 个数据,就首先要访问第i-1个数据,在整个文件操作过程中,将移动位置指
针的工作交给系统自动完成。磁带文件就是一个典型的顺序存取文件。随机访问文件是根据应用的需要,通过命令移动位置指针直接定位到文件内需要的位置并进行数据操作。
对文件的基本操作分为读文件和写文件。所谓“读文件”就是将文件中的数据读入内存之中,也称为“输入”。所谓“写文件”就是将内存中的数据存入文件之中,也称为“输出”。
C++标准类库中有3个流类可以用于文件操作,这3个类统称为文件流类,分别如下:
1)ifstream:用于从文件中读取数据。
2)ofstream:用于向文件中写入数据。
3)fstream:既可用于从文件中读取数据,又可用于向文件中写入数据。
使用这3个流类时,程序中需要包含fstream头文件。类ifstream和类fstream都是从类istream派生
而来的,因此类ifstream拥有类istream的全部成员函数。同样,类ofstream和类fstream也拥有类ostream的全部成员函数。这3个类中有一些十分熟悉的成员函数可以使用,如operator<<、operator>>、peek( )、ignore( )、getline( )、get( )等。
C语言学习笔记
类的成员:
数据成员:字段:成员变量,描述类的特性值;常量。
函数成员:方法(或称函数):实现特定功能的计算和操作;属性;索引器;事件;运算符;构造函数:名称和类相同的函数;析构函数:名称是类名前加“~”,类无效时执行。
访问修饰符:
修饰成员的可访问范围。
Public:可以在任何地方被访问
Internal:可以在本项目访问
Private:只能在本类访问(默认)
Protected:只能在本类或者子类被访问
对象:
对象是类的实例化,具体格式:
类名对象名= new 类名(参数)
对象用点运算符“.”来引用类的成员,并受到成员访问修饰符的控制
类成员:
静态成员:使用类名+点运算符“.”来引用,不能用对象引用
静态字段只标记一个储存位置,无论创建多少个实例,静
态字段在内存中只占同一区域
实例成员:
构造函数:
名称和类相同的函数。
功能:初始化类的实例,即创建对象时,直接赋值。
1.每个类都有构造函数,系统会提供一个public类型的默认构造函
数。
2.Private类型的构造函数,表达该类不能被实例化,通常用于只含
静态成员的类。
3.不能被显示的调用。
访问一个类时,将一方面执行构造函数中的语句,执行构造函数之前,系统会给所有未赋初值的字段设立默认值。
静态构造函数:
用static声明的构造函数,用来初始化类,不能初始化实例或者对象在给定的程序中至多只能执行一次,程序中第一次执行某事件时,讲触发静态构造函数的执行。
非静态构造函数需要通过实例才干调用。
析构函数:
销毁类内指定的实例。一个类只能有一个析构函数,不能显示调用,系统自动调用,调用时机由公共语言运营时的垃圾回收机制拟定。
(完整版)C语言程序设计谭浩强重点笔记
C语言设计
学习笔记
早晨:06:40 起床
07:20——08:20 英语 1小时
新概念英语(单词、语法、听读背)
大学英语(单词、语法、听读背)
上午:08:30—-10:30 计算机基础 2小时
10:50-—11:30 计算机科学技术导论
计算机组成原理
微机原理及接口技术
Intel微处理器结构编程与接口
深入理解计算机系统
80x86汇编语言程序设计
8086-8088宏汇编语言程序设计教程
BIOS研发技术剖析
自己动手写操作系统
操作系统原理
Windows操作系统原理
Windows内部原理系列
Windows程序内部运行原理
计算机网络第五版
中午:12:00——02:00 午休
下午:02:30—-04:30 计算机应用及编程
Windows用户管理指南、AD配置指南、网络专业指南、Windows即学即会教
程
Windows下32位汇编语言程序设计、C#编程
晚上:05:30——08:00 锻炼、晚餐
08:00--09:00 辅导
09:00——11:00 专业基础 2小时
大学数学、大学物理、电机及拖动、电力电子技术、通信技术11:30 休息
目录
第一章 C语言概述..................................................... - 1 -
1.1 C程序结构特点16 .............................................. - 1 -
1.2 C程序上机步骤17 ............................................... - 1 -第二章程序的灵魂—-算法23 ........................................... - 1 -
C语言学习笔记
C语言学习笔记
第一章概述
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.实型数据
(完整)C语言 谭浩强学习笔记
C语言谭浩强版笔记
第一章程序设计和C语言
1、计算机能直接识别和接受的二进制代码称为机器指令,机器指令的集合就是该计算机的机器语言。
2、语言的发展历史:①机器语言②符号语言③高级语言
3、高级语言的发展:①非结构化语言②结构化语言③面向对象的语言
4、C语言的祖先是BCPL语言
5、在字符串中的//和/*都不作为注释的开始。而是作为字符串的一部分。
【但是在vc++6.0中//显示编译错误】
6、不要以为在max函数中求出最大值z后就会自动地作为函数值返回调用处,必须用return语句指定将哪个值作为函数值。也不要不加分析地在所有函数后面都写上return 0
7、一个程序由一个或多个源程序文件组成
8、全局声明:即在函数之外进行的数据声明,在函数外面声明的变量称为全局变量。例如把int a,b,sum;放到main函数的前面
9、函数是C程序的主要组成部分,编写C程序的工作主要就是编写一个个函数
10、一个C语言程序是由一个或多个函数组成的,其中必须有且只有一个main函数
11、一个小程序只包含一个源程序文件,在一个源程序文件中包含若
干个函数(其中一个为main函数),若程序规模太大,可以使一个程序包含若干个源程序文件,每个源程序文件又包含若干个函数【一个源程序文件就是一个程序模块,一个程序分成若干个程序模块】12、在进行编译时是以源程序文件为对象进行的【分别对各源程序文件进行编译得到相应的目标程序,然后再将这些目标程序连接成为一个统一的二进制可执行程序】
13、C语言的这种特点使得容易实现程序的模块化
C语言学习入门笔记之数组
数组笔记
在程序设计中,把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。在C语言中,数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。
1.一维数组的定义和引用
1.一维数组的定义方式
在C语言中使用数组必须先进行定义。一维数组的定义方式为:
类型说明符数组名[常量表达式];
其中:类型说明符是任一种基本数据类型或构造数据类型。数组名是用户定义的数组标识符。方括号中的常量表达式表示数据元素的个数,也称为数组的长度。例如:
int a[10]; 说明整型数组a,有10 个元素。
float b[10],c[20]; 说明实型数组b,有10个元素,实型数组c,有20个元素。
char ch[20]; 说明字符数组ch有20 个元素。
对于数组类型说明应注意以下几点:
1)数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。
2)数组名的书写规则应遵循标识符命名规则。
3)数组名不能与其它变量名相同。例如:
main()
{
int a; float a[10];
……
}
是错误的。
4)方括号中常量表达式表示数组元素的个数,如a[5]表示数组a 有5 个元素。但是其下标从0 开始计算。因此5 个元素分别为a[0],a[1],a[2],a[3],a[4]。
5)常量表达式中可以包括常量和符号常量,不能用变量来表示元素的个数,也就是说,C语言不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。
C Primer Plus(第五版)学习笔记
C Primer Plus(第五版)学习笔记
第一章概览
1.1 C语言的起源
记住Dennis Ritchie和Ken Thomson。是在设计UNIX操作系统的时候开发的。
1.2 使用C语言的理由
C是一种融合了控制特性的现代语言,而我们已发现在计算机科学的理论和实践中,控制特性是很重要的。其设计使得用户可以自然地采用自顶向下的规划、结构化的编程,以及模块化的设计。这种做法使得编写出的程序更可靠、更易懂。
C是一种高效的语言。C程序往往很紧凑且运行速度快。
C是一种可移植语言。由于C与UNIX的紧密联系,UNIX系统通常都带有一个C编译器作为程序包的一部分。Linux中同样也包括一个C 编译器。
C强大而又灵活(计算机世界中经常使用的两个词)。
C面向编程人员的需要。它允许您访问硬件,并可以操纵内存中的特定位。它具有丰富的运算符供选择,让您能够简洁地表达自己的意图。多数C实现都有一个大型的库,其中包含有用的C函数。这些函数能够处理编程人员通常会面对的许多需求。
C的简洁性与其丰富的运算符相结合,使其可能会编写出极难理解的代码。没有谁强迫您编写含糊难懂的代码,但存在这样的可能性。试问,除C之外还有哪种语言存在一年一度的“含糊代码”(Obfuscated
Code)竞赛呢?
1.3 C语言的发展方向
不管C++和Java这些较新的语言如何流行,C在软件产业仍然是一种重要的技能,在最想获得的技能中,它一般都列在前10名。特别是在嵌入式系统的编程中,C已开始流行。也就是说,它将用来为汽车、照相机、DVD播放器和其他现代化设备中逐渐普及的微处理器编程。同样,C已开始进入长期以来一直属于FORTRAN的科学编程领域。最后,由于它是一种适合用来开发操作系统的语言,C在Linux的开发中也扮演着重要的角色。
C语言学习笔记,悉心整理
运算符和表达式
算术运算符和表达式:+ - * / %(模运算) 两个整数相除,结果一定是整数 模运算符(求余)要求两个运算对象必须是整数,结果的符号与被除数(分子)一致。
复合语句 把若干语句用{}括起来就是复合语句
C 程序的三种基本结构 顺序结构 分支结构 循环结构
基本语句
赋值语句 变量=表达式; 左边必须是变量,右边可以如下:变量 1=变量 2=。。。=表达式 不可以:int a=b=c=2;只能 int a=2,b=2,c=2;
复合语句 用{}括起来,只能看成一条语句,而不是多条语句, 从{开始执行,必须执行到}为止
4,char 和 int 可以通用,当把字符赋值给整型变量时,采用符号扩展,把整数赋值给字符变量时,截取整
数的低字节的值。
5,使用 sizeof()函数可以获得变量所占的字节数
常量与变量
变量名用标示符表示,由字母数字下划线组成,必须是字母或者下划线开头。 变量必须先定义在使用: 类型标示符 变量列表; 可采用的定义以及赋初始值的格式:
C 语言程序基础 基本元素
若干函数构成 C 语言程序,必须有一个 main 函数
【C语言C++编程学习笔记】基础语法,第一个简单的实例编程入门教程!
【C语⾔C++编程学习笔记】基础语法,第⼀个简单的实例编程⼊门教程!
C语⾔/C++编程学习:⼀个简单的实例
如果你能知道该程序将会在显⽰器上显⽰⼀些内容,那说明你还是知道⼀些的!
确实如此,但所要显⽰的确切内容不是显⽽易见的,所以请运⾏程序来观看结果。
⾸先,⽤你熟悉的编辑器建⽴⼀个上⾯这个样的程序,然后给这个程序取⼀个名字,并以 .c 作为结尾以满⾜所在系统对⽂件名格式的要求。
例如,你可以把它命名为 helloworld.c。现在编译并运⾏该程序。
如果⼀切运⾏正常,其显⽰结果为:
实例简单说明
◆ #include ←包含另⼀个⽂件
这是程序的第⼀⾏。它的作⽤相当于你在⽂件中的这⾏所在的位置键⼊了⽂件 stdio.h 的完整内容。实际上,它是⼀种剪切和粘贴操作,这样可以⽅便地在多个程序间共享公⽤的信息。
#include 语句是 C预处理指令的⼀个例⼦。通常,C 编译器在编译前要对源代码做⼀些准备⼯作;这称为预处理。
stdio.h ⽂件作为所有 C编译包的⼀部分提供,它包含了有关输出输⼊函数的信息以供编译器使⽤。这个名字代表标准输⼊输出头⽂件。我们称之为头⽂件,C语⾔中通常都带有许多头⽂件。
◆ int main () ←函数名
接下来的这⾏代码声明了⼀个 main函数。⼀个 C语⾔程序总是从称为 main()的函数开始执⾏的。
你可以对你所⽤的其他函数任意命名,但是 main()必须是开始的函数,所以说,main()函数在程序中是唯⼀的。
那么圆括号的功能呢?它们表明 main()是⼀个函数。以后你将了解到更多的函数。但现在,请你记住这个函数是 C程序的基本模块。
C语言学习笔记(004)-数组名和数组首地址(转)
C语⾔学习笔记(004)-数组名和数组⾸地址(转)
⼀个变量有地址,⼀个数组包含若⼲元素,每个数组元素都在内存中占⽤存储单元,它们都有相应的地址。指针变量既然可以指向变量,当然也可以指向数组和数组元素(把数据起始地址或某⼀元素的地址放到⼀个指针变量中)。所谓数组的指针是指数组的起始地址,数组元素的指针数组元素的地址。
这种指针变量的定义与以前介绍的指向变量的指针变量相同。应当注意,如果数组为int型,则指针变量亦应指向int型。
规定数组名代表数组的⾸地址,也就是第⼀个元素的地址。因此,下⾯两个语句等价:
p=&a[0];
p=a;
注意数组a不代表整个数组,上述"p=a;"的作⽤是"把a数组的⾸地址赋给指针变量p",⽽不是"把数组a各元素的值赋给p"。
在定义指针变量时可以赋给初值:
int*p=&a[0];
它等效于:
int*p;
p=&a[0];
当然定义时也可以写成
int*p=a;
它的作⽤是将a的⾸地址(即a[0]的地址)赋给指针变量p(⽽不是*p)。
假设p已定义为指针变量,并已给它赋了⼀个地址,使它指向某⼀个数组元素。
如果有以下赋值语句: *p=1;表⽰对P当前所指向的数组元素赋以⼀个值(值为1)。
C规定对p+1指向数组的下⼀个元素(⽽不是将p值简单地加1)。
如果p的这初值为&a[0],则: (1)p+i和a+i就是a[i]的地址,或者说,它们指向a数组的第i个元素。 (2)*(p+i)或*(a+i)是p+i或a+i所指向的数组元素,即a[i]。 (3)指向数组的指针变量也可以带下标,如p[i]与*(p+i)等价。
翁凯c语言笔记
翁凯c语言笔记
翁凯是一位热爱编程的学生,他在学习C语言的过程中积累了很多宝贵的经验和知识。下面是他的一些C语言学习笔记,希望对大家有所帮助。
1. 基础语法:C语言是一种结构化的编程语言,具有丰富的数据类型和运算符。翁凯通过学习基础语法,掌握了变量的声明和赋值、控制语句、循环语句等基本概念。
2. 函数与模块化编程:C语言通过函数的调用来实现模块化编程,提高了代码的可读性和可维护性。翁凯学会了如何定义和调用函数,并且学习了递归函数的使用。
3. 数组与指针:在C语言中,数组和指针是非常重要的概念。翁凯弄清楚了数组和指针之间的关系,并学会了如何使用它们进行内存管理和数据操作。
4. 结构体与文件操作:C语言中的结构体可以用来存储不同类型的数据,翁凯学会了如何定义和使用结构体,并且掌握了文件的读写操作,可以将结构体数据保存到文件中。
5. 动态内存分配:C语言提供了动态内存分配的功能,翁凯学会了
使用malloc()和free()函数来进行内存管理,避免了内存泄漏和内存溢出的问题。
6. 编程技巧与调试:除了学习语法和基本概念,翁凯还注重培养编程技巧和调试能力。他学会了使用调试工具和技巧,解决程序中的bug,并且善于利用注释、缩进和命名规范来提高代码的可读性。
翁凯通过不断学习和实践,逐渐掌握了C语言的基本知识和技巧。他深知编程需要不断练习和积累,因此他坚持每天都进行编程练习,并且参与了一些开源项目,与其他开发者交流经验。翁凯相信,只有不断学习和实践,才能成为一名优秀的C语言程序员。
C语言学习入门笔记之结构体与共用体
结构体与共用体笔记
定义结构体
C语言允许用户自己建立由不同类型数据组成的组合型的数据结构,它称为结构体(structre)。在其他一些高级语言中称为“记录”.定义后的结构体类型和系统提供的标准类型(如int, char, float, double 等)具有相似的作用,都可以用来定义变量,只不过int等类型是系统已声明的,而结构体类型是由用户根据需要在程序中指定的。
定义一个结构体类型的一般形式为:
struct 结构体名
{ 成员表列};
注意:1.结构体类型的名字是由一个关键字struct和结构体名组合而成的(例如struct Student) ,结构体名是由用户指定的,又称“结构体标记”,以区别于其他结构体类型。上面的结构体声明中Student就是结构体名(结构体标记)。
2.花括号内是该结构体所包括的子项,称为结构体的成员。“成员表列"(member list)也称为“域表”(field list),成员表列由若干个成员组成,每一个成员是结构体中的一个域。对每个成员也必须作类型说明,其形式为:
类型说明符成员名;
成员名的命名应符合标识符的书写规定。例如:
struct stu
{int num;
char name[20];
char sex;
float score;};
3.一个结构体的成员可以属于另一个结构体类型(嵌套)。例如:
struct Date //声明一个结构体类型struct Date
{ int month;//月
int day;//日
int year;//年
}
struct Student//声明一个结构体类型struct Student
C语言基础学习笔记
C语言基础学习笔记
(第一版修改)
丁炳亮
1数据类型和表达式
1.1计算机内数据存储方式
理解与测试:
什么是补码?我们得先知道模的概念。模“模”是指一个计量系统的计数范围。如时钟等。计算机也可以看成一个计量机器,它也有一个计量范围,即都存在一个“模”。例如:时钟的计量范围是0~11,模=12。表示n位的计算机计量范围是0~2^(n)-1,模=2^(n)。
“模”实质上是计量器产生“溢出”的量,它的值在计量器上表示不出来,计量器上只能表示出模的余数。任何有模的计量器,均可化减法为加法运算。例如:假设当前时针指向10点,而准确时间是6点,调整时间可有以下两种拨法:一种是倒拨4小时,即:10-4=6;另一种是顺拨8小时:10+8=12+6=6在以12模的系统中,加8和减4效果是一样的,因此凡是减4运算,都可以用加8来代替。对“模”而言,8和4互为补数。实际上以12模的系统中,11和1,10和2,9和3,7和5,6和6都有这个特性。共同的特点是两者相加等于模。
二进制中整数的补码求法是:正数的补码为原码,负数的补码是符号位不变其他位全部取反再整个数加1。我们可以通过下面的代码看下负整数在计算机内部的表示。
void f(int n)
{
unsigned int i;
for(i=1,i<<=15;i;i>>=1)
{
if(i&n)
printf("1");
else
printf("0");
}
printf("\n");
}
main()
{
int a=-0xff;
f(a);
getch();
}
输出的结果是1111111100000001。
学习C语言详细笔记(完整版)
C语言视频教程
第一讲:(1-13)C语言概述
一、为什么学习C语言
1)C的起源和发展
2)C的特点
3)C的应用领域
4)C的重要性
二、怎样学习C语言
三、学习目标
四、常见问题答疑
(1)学习JAVA为什么建议先学C语言
(2)没学过计算机专业课程能够学懂C语言
(3)英语和数学不好能学好C语言么?
五、课程计划
六、举例子:一元二次方程
一、为什么学习C语言
1)C的起源和发展(ppt)
在第三代语言中,以1980年为分水岭,分为结构化和面向对象语言。
Fortran语言主要用于科学计算。
Basic语言是vb的前生,pascal语言一般是用于教学。
C语言是最重要的,其他的语言一般很少用了。结构化的代表语言是c语言。结构化语言的数据和操作是分离的,导致在写大项目的时候,会出现各种各样莫名其妙的问题。
在面向对象的语言中c++是最复杂的语言。由于c++语言太复杂,sun公司对c++进行了改装,
产生了java语言。而c#是由微软开发的,和java相似,几乎一模一样。
在高级语言的执行速度上,c是最快的,c++其次,而java和c#是最后的。Java和c#流行,主要的一个原因是可以跨平台。
C语言的发展和过程:
2)C语言的特点:
·优点:代码量小,速度快,功能强大。
金山公司最主要是靠wps办公软件来发展的。Wps是c语言开发的,其安装包比Office少了10
多倍。
三大操作系统:windows,unix,linux
Windows内核是c语言写的,而外壳是c++写的。Java永远不可能写操作系统。因为java运行速度太慢了。
而linux和unix都是纯c写的。
c语言学习笔记
c语言学习笔记
第一章基础
一、函数是c语言的基本单位,一个程序有一个或多个函数组成,且必须包含main函数(有且只有一个)
二、程序总是从main函数开始执行
三、c语言的3种基本结构是顺序结构、选择结构、循环结构
四、//表示单行注释
五、/* */表示块注释
第二章常量
定义:其值不能被改变的量叫常量
一、整形常量
例如:
100,十进制数100
-16,十进制数-16
07,八进制数7
-036,八进制数-36,等价于十进制数-30
0x19,十六进制数19,等价于十进制数25
-0x2f,十六进制数-2f,等价于十进制数-47
二、实型常量
例如:
3.5,double型常量
2e3,double型常量
-2e-1,double型常量
6. double型常量,等于6.0
.3 double型常量,等于0.6
2.5f float型常量
三、字符常量
1、普通字符:用‘’单撇号括起来的一个字符,如‘a’,‘9’
2、转义字符:以\开头的字符,如
\n,换行
\t,tab键
\\,单斜杠\
\61,61是八进制数,等于十进制数49,即字符‘1’
\x62,62是十六进制数,等于十进制98,既字符‘b’
四、字符串常量
用“”双撇号括起来的若干字符
例如:“abc”,“”,“a”
五、符号常量
用#define指令指定的常量
例如:
#define PI 3.1415827
第三章变量
一、必须先定义(声明),后使用
二、必须是一个合法的标识符
三、一个合法的标识符必须满足以下3个条件
1、只由字母、数字、_(下划线)三种字符组成
2、首字符不能是数字
3、不能与c语言的保留字冲突,如void,int等都是保留字
C语言学习笔记(4)基础篇--ifelse语句
C语⾔学习笔记(4)基础篇--ifelse语句
if
格式:if (条件)语句;
1. 条件可以是任何表达式,变量,常量
2. 判断条件的真假,真则执⾏后⾯的⼀个分句,假不执⾏后⾯的⼀个分句
3. 若想控制多⾏语句,⽤⼤括号括起来
流程图
如if条件为真执⾏b++,假则跳过控制下的⼀⾏分句。输出结果a为0是因为在if条件⾥a被赋值0
eg1:
⽐较两个数的⼤⼩,若a>b,则a、b互换,并且输出,否则a、b原始值输出,⽤单分⽀选择结构完成
//a=2,b=3让ab的值互换
看起来没有达到我们想要的效果。程序表达的是顺序执⾏的动作,⽽不是关系,这⾥的a=b,b=a是依次执⾏的,结果使得a和b都得到b 原来的值
我们需要⼀个新的变量
else
else⼦句不能作为语句单独使⽤,它必须是if语句的⼀部分,与if配对使⽤
格式:if(条件)语句1;
else语句2;
流程图
判断条件的真假,为真执⾏语句1,为假执⾏else的语句2。else也只控制后⾯的⼀个分句,若想控制多个分句,加上⼤括号。
若看不懂为什么等于6,那么看⼀下ab的值是什么
⾃增⾃减本⾝具有赋值过程if else嵌套
流程图
嵌套的if
第⼀种:
if(条件1)
if(条件2)
if(条件3)
...
第⼆种
if(条件1)
if(条件2)
...
else ...
第三种
if(条件1)
if(条件2)
else...
else...
看⼀下⼆、三种
//先判断第⼀个if,为假则跳过整个判断,进⼊输出语句。
//还是上⾯那个例⼦,若你想让第⼀个if做判断之后结果为假执⾏else语句,那么把第⼀个if和else⽤缩进做对齐格式,看看这么写对不对
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C学习笔记
一、数据
1.数据类型分类
2.变量与常量
变量是程序中数据的存储空间的的抽象。
typedef是C语言的关键字,作用是为一种数据类型定义一个新名字。
3.存储类
存储类的属性:作用域(空间)、存储期(时间)、链接点
存储方式:静态存储、动态存储。是就时间属性来区分的。
静态存储方式和静态变量是不同的概念。静态变量是就链接属性来区分的,有静态
局部变量和静态全局变量。
二、字符串格式化输入输出
三、运算符、表达式和语句
1.运算符种类
4.运算符优先级
结合性:同一优先级的运算符,运算次序由结合方向所决定。
结合方向由右向左:单目运算符、条件运算符、赋值运算符
简单优先级比较:单目运算符> 算术运算符> 关系运算符> 逻辑运算符> 赋值运算符
5.运算符相关知识点总结
算术---: 数据类型的转换:自动转换和强制转换
赋值---:赋值表达式的值与被赋值变量的值得关系;
赋值中的类型转换:特别注意有符号与无符号之间的转换造成的BUG;
关系---:if( 1 == a ){……},防止错写成“=”造成的隐藏BUG;
0为假,非0为真;
逻辑---:逻辑量,表达式的逻辑值(0 or 1);
sizeof---:s izeof(<类型或变量名>);
相同运算符的的嵌套造成的表达式的拓展;
6.表达式的概念
四、程序结构和控制语句
1.3种基本结构:顺序、分支、循环
循环:当型循环和直到循环
2.C语言控制语句
(1)条件判断语句(选择语句):if、switch
if:单分支、双分支、多分支
if语句的嵌套方式;
if-else的配对——就近配对;
复合语句被看做是单条语句,且{……}后无“;”
switch语句中case标签并没有把语句列表分为几个部分,它只是确定语
句执行的入口点,default作用和普通标号一样;
(2)循环语句:while和do-while、for、goto-标号
(3)转向语句:break、continue、goto
continue:之后语句不再执行,结束本次循环,开始下次循环;
五、数组
1.一维数组
数组元素可以是基本类型或者构造类型;
数组必须逐个元素引用,而不能整体引用;逐个元素通过下标引用;
在数组引用中要注意数组越界问题;
一维数组初始化的多种形式;eg. int a[10] = {0};
冒泡排序核心:
if(a[j] < a[j+1])
选择排序核心:
r = i;
for(j = i + 1; j < n; j++)
if(a[j] < a[r])
r = j;
2.多维数组
二位数组的行与列:int a[r][v]; r—行,v—列;
可以将二位数组a[3][4]理解为含有三个元素:a[0], a[1], a[2],每个元素a[i]都是包含
四个元素的一维数组;
二维数组的内存分配:按行优先存;
a[2][3]:
a, a+1 代表行地址,a+1 = &a[1][0];
a[0], a[0]+1 代表列地址,a[0]+1 = &a[0][1];
3.字符串数组
用字符串方式赋值比用字符逐个赋值多占一个字符——“\0”;
int scanf( const char * restrict format, ... );
左值:L-value中的L指的是Location,表示可寻址。A value (computer science)that has
an address.
右值:R-value中的R指的是Read,表示可读。in computer science, a value that does
not have an address in a computer language.
字符串处理函数:strcpy(), strcat(), strcmp(), strlen(), strtok();
六、指针
1.指针的本质是数据类型,而这个变量存的是存储空间的地址值
变量是存储空间的抽象,指针类型是存储数据的类型
指针和数组名是不同的!!!
所有数据类型的指针在32位机上都是32位(4个字节);
*(&m)= m;
野指针是没有初始化的指针,其指向是随机的;
NULL:
空指针,指向为空,唯一常量指针。即int *p = 0; or int *p = NULL;,指向0号存储单元。但访问零号地址存储值或者修改其值,都是不允许的。
void指针:
指向的数据类型是不确定的,只知道指针目标的起始地址,不知道其占用的字节数,必须通过强制类型转换为其他数据类型才能使用;
指针的运算:
算数运算:p+n, p-n, p++, p--, p-q
两个指针相减的结果值不是地址量,而是两个指针之间相隔数据的个数
关系运算:p > q
const与指针
const int *p; p is a point to const int
int * const p const p is a point to int
字符指针
char *s = "welcome"; = const char *s = "welcome";
字符串的首地址赋值给s
在程序中使用字符串常量会产生一个“指向字符串的常指针”,当一个字符串出现在一个表达式中时,表达式所引用的值是存储该字符串常量的内存首地址,而不是字符串本身。
2.指针与数组
(1)指针与一维数组
int a[5], *p;
p = a;
a[1] = *(a+1),*(p+1) = p[1]
数组名是地址常量,指针是地址变量
(2)指针与二维数组
指针数组
int * p[2];
int *p[2] 与int (*p)[2] 区别?
答:根据运算符的优先级,int* p[2]——p先与[]结合,p是一个数组名,是一个地