C++学习笔记
C++学习笔记
第一章c++世界地图
Windows 、linux 、嵌入式,三足鼎立
第二章c++旅行世界必备物品
1、c++程序= 预编译指令+ 程序代码+ 注释。
#iinclude “stdafx.h”----->预编译指令
#include
Using namespace std;
Int _tmain(int argc ,_Tchar *argv[])
{
//在屏幕上显示“HElloWord”----→注释
Cout<<”HelloWord!”< Return 0; } “”””: 表示一个文件名,预处理时,首先在当前目录下搜索,若不存在继续在项目包含目录下搜索。 “<>”:表示一个文件名,预处理时会直接在项目的包含目录下搜索这个文件 所以通常用“”””来嵌入当前项目目录下的文件,使用<>来嵌入各种项目包含目录下的库文件。 注释:序言性注释和解释性注释 序言性注释:位于源程序文件的开始,说明程序的文件名、用途、编写时间、维护历史等。解释性注释:多分散于程序的各个部分,用来向读者解释代码的含义,说明一些必要的问题。 注释应该准确易懂,位于代码的上方或右方,不能放于下方。多重嵌套时,应该在某些段落结束处加注释。 Using namespace std :表示所使用的名字空间是std。名字空间,就是标识符的上下文。如cout、endl都是std空间下的标识符。 过程:源文件.cpp文件高级语言》预处理器处理》编译器翻译成计算机能运行的目标语言,形成目标文件.obj(.o Linux下)链接器link.exe 》计算机执行.exe 2、程序= 数据+算法 数据:对现实世界各个事务的抽象。 算法:对数据处理的抽象。如通过处理长方形的长和宽的数据得到长方形的面积。 Cout<<”HelloWord”< HelloWord 描述数据,整个语句就是处理数据。 3、iostream 由两个基本的istream和ostream构成。分别为输入流和输出流。 Stream 流:表示一个对象到另外一个对象的流动。 Cin对象:处理标准输入,即键盘输入 Cout对象:处理标准输出,即屏幕输出。 Cerr对象:用于生成警告或错误消息。 Clog对象:用于生成程序的执行信息。 “<<”:插入符:向流中插入数据;“>>”:提取符:向流中提取数据。 Cout<< 、cin>> Endl 操纵符:作用是输出换行符,并且刷新输出缓冲器。 4、输出格式控制 dec :十进制表示数值数据 hex :十六进制表示 oct :八进制 endl :插图换行 4、文件的读写 # 构造函数:这个对象创建时所执行的函数。 注:1、让代码变规范快捷键:Ctrl + K 、Ctrl + F 2、软件的debug版本(调试版本,需安装Visual C++才能运行)和release版本(发布版本,可以在没安装的Visual C++的计算机上正常运行)。 第三章:c++世界众生相 1、数据类型 C++中可以分为基本数据类型和构造数据类型。 基本数据类型:时c++中最基础的数据类型,不可再分。如一个整数一个字符。 构造数据类型:可以将多个基本数据类型组合起来,构造一个比较复杂的数据类型。 例如:长发形数据结构 Struct Rect { Int m_Length; int m_Width; }; 构造数据类型有:1)数组类型2)结构类型3)联合类型4)枚举类型。 2、常量与变量 常量:只能读取不能修改 变量:既可读取也可修改 注:在程序中常量可以直接使用而变量必须先声明在使用。 3、声明变量 格式:数据类型变量名;(数据类型变量名1,变量名2 ;不推荐) 非法的变量声明: 1)不能使用关键字作为变量名例int case; 2)变量名不能以数字开始例int 1member; 3)变量名字中不能含空格例bool do you love me; 4)变量声明一般放在变量使用之前,一般放在函数体开始的部分。 4、变量命名 匈牙利命名法:变量名= 属性+ 类型+ 对象描述 命名规则: 1)简单易懂; 2)最短长度,最大信息量; 3)变量名由名词构成; 4)不要使用数字编号; 5)常量大写; 6)使用约定俗成的前缀、前加s_ 表示静态(static)变量;前加g_ 表示全局(global)变量;类的数据成员前加m_ 表示成员变量。 5.c++中的常量 主要包括整形常量、浮点型常量、字符常量、字符串常量。 6、转义字符 \a :响铃计算机喇叭发声。\n:换行\r :回车\t制表符 \\ :输出\本身\” :输出双引号\’:输出单引号 7、用宏和const关键字定义常量 #define 宏名称宏值 宏名称用大写字母表示,宏值可以时一个常数、一个字符串。甚至更复杂的语句。 例#define PI 3.1415926 宏的本质时替代,预编译处理源代码时会用宏值代替宏。 const 数据类型常量名= 常量值; 由于常量的值不可修改所以在定义常量的同时完成它的赋值。 8、数值类型 1)整形:int 2个字节;short int 2个字节;long int 4个字节;longlongint 8个字节(应对64位下的开发);还可以用关键字unsigned和signed对整形数据进行修饰。 2)浮点型 单精度型:float 占4个字节;双精度型double 占8个字节;长双精度型long double 占10个字节。 3)布尔类型 bool 占1个字节;bool bSuccess = ture;当表达式需要一个算数值时,布尔类型对象将被隐式的转换成int类型。成为一个整形对象,取值false为0,ture为1. 函数里不能定义函数。 4)字符类型 类型说明符char 占一个字节;取值-128~127; wchar_t 占2个字节表示更大的范围字符。 5)字符串类型 表示一个字符串,用basic_string来表示。实质是对一个字符数组的包装。用0表示字符串的结束。若包装的为char类型的数组,则字符串类型为string,时wchar_t类型的数组,则字符串类型就是wstring。 *防止程序一闪就关可以在末尾加: cin.get(); getch();system("pause");int i;cin>>i; 9、数组 声明一个数组的语法格式: 数据类型数组名[个数常量][个数常量]…; 数组初始化,可以完全赋值,可以部分赋值,也可以不赋值默认初始值。 int n = nSalary[24]; 表示把nsalary数组中的第25个数据赋值给n。下标是以0开始的,即[0]表示第一个元素。一个长度为n的数组,其下标最大值是n-1. floa fa = fArray[1][1]l 表示访问fArray多维数组中的第2行第2列元素。对于多维数组,c++按照维数从高到低的顺序来排列的。在同一维按下标从低到高的顺序排列。 10、枚举类型 声明一个枚举类型的语法格式: enum 枚举类型名 { 1, 2, . . n }; 枚举类型取值只能时枚举类型定义列出的某一个。 若定义枚举类型时没给枚举元素赋值,那么会有一个默认的初始值,0,1,2,3…, 如果想把某个变量的取值限定在某几个可选值的范围之内,则可以把这个变量声明为枚举类型。 枚举元素的数值是常量,不能再完成枚举类型的定义后再改变其中某个元素的值。 11、结构体 struct 结构体名 { 数据类型 1 成员名1; 数据类型2 成员名2; 。。。 数据类型n 成员名n; }; 结构体变量实际上是结构体中多个成员变量的组合,它包含了结构体中的所有成员变量。使用“.”运算符来引用一个结构体中的各个成员变量: 结构体变量.成员变量 12、指针 指针本质时一种表示内存地址的数据类型,与常用的int、float一样,只是指针表示的时内存地址,程序可以通过指针直接操作内存。 内存是跟程序打交道的主要硬件。一个程序主要时通过读取内存中的数据参与运算,然后将结果数据在写会内存。 有两种途径可以访问内存。一种是通过变量名间接访问。先定义保存数据的变量,再通过变量名间接的访问内存中存放的数据。;另外一种是直接通过地址,也就是通过指针来访问内存中的数据。 1KB = 1024Byte 1Byte = 8bit 存放在指针中的地址可能时一个对象的地址、一个整数的地址。甚至是一个函数的地址。如果指针变量保存的是一个对象或者函数的地址,就说这个指针指向这个对象或函数。 定义: 数据类型*变量名; 数据类型可以是基本数据类型,int,double等等,也可以是自定义的结构体复杂数据类型。数据类型也称为指针的类型。 编码规范:一条语句只完成一件事情。 使用指针之前,必须对其进行赋值,将其指向某个有意义的数据或代码。 指针变量= 内存地址; & :取地址运算符,放在一个变量前面,就得到该变量在内存中存放的地址。 * :指针运算符或解析运算符,执行的是与&运算符相反的操作。如果将其放在一个指针变量的前面,就可以取得这个指针所指向的内容。无论内是数据还是程序代码。 -> :如果一个指针指向的是一个结构体类型的变量,可以直接使用–>运算符来访问这个结构体的成员变量。 对于一个变量,可以用取地址运算符&得到它的地址,然后赋给指针。也可以使用一个指针对另一个指针进行赋值。 第四章将语句编织成程序 1、用运算符对数据进行运算 表达式由运算符、操作数、标点符号组成。 c = (a < b) ? a:b 比较a是否小于b,真则将a赋给c,否则b赋给c。 a、b、c是操作数,<,?是操作符,()是标点符号。 1)、算数运算符 + - * / % , ++i 和i++ 前置自增运算符先自增后置自增运算符后自增 软件开发中的重要经验:使用前置自增运算符代替后置自增运算符。 2)、赋值操作符 = ,+=, -= ,*= ,/= ,%= ,<<= ,>>= ,&= ,^=,|= (二元运算符) 3)、关系运算符 > >= < <= == != (二元运算符) 运算结果类型为bool型,若两个操作数关系符合运算符,则表达式结果为ture,反之为false。注:为了保证代码行为的一致性,不要在代码中使用关系运算符== 比较两个浮点数是否相等。 三元元算符语法格式如下: 条件判断表达式?ture表达式:false表达式 最常见的应用是选出两个数中较大或较小的一个。 4)!(非)、&&(与)、||(或) !作用是取反。&&只有当两个操作数值都为ture时,结果才是ture。||只要两个操作数有一个为ture,结果就为ture。 2、运算符的优先级 3,将表达式编织成语句 变量定义语句int a; 变量赋值语句a=20; 当连续的多个语句属于同一控制范畴时,用一对{}括起。 4,条件选择语句 1)if语句 if语句中的else部分可以省略; if语句可以实现嵌套; if语句可以并列;(若多个表达式分之都为ture则只执行第一个) 2)并列选择的switch语句 switch条件选择结构,应该注意的问题: 1)switch后的表达式是整形,或能够转化为整形的其他类型如字符型或枚举类型。2)case之后必须是一个常量表达式。不能是变量或带有变量的表达式。 3)各常量表达式值不同 5、循环语句 1)while 2)do while循环 与while循环的区别是do while首先执行一次循环体,再判断表达式的值,而while循环首先判断表达式的值在决定是否循环。在某些循环至少完成一次的时候用do while更合适。3)for循环 使用条件表示式时,确保表达式在循环结束时值为false若循环无论怎么执行,条件表达式值始终为ture时,会形成死循环。 for循环适合于拥有某个特定的循环范围的循环场景。 4)循环控制break和continue break和continue都是在某种条件下跳出循环,但是两者又有本质差别:break是跳出整个循环,立刻结束循环语句的执行,而continue只跳出本次循环,继续执行下一次的循环。 6、从语句到程序 顺序结构可以完成简单的一步步顺序执行的任务 选择结构可以根据不同条件作出决策,选择不同执行路径,实现不同的功能。 循环结构用于一些需要反复执行的语句,完成的功能需要多次重复实现。 正是依靠这三种控制结构将分散的语句串联起来,表达一定的运算逻辑,形成一个完整的程序。 第五章用函数封装程序功能 1、把一个程序装进箱子(封装)需要两步: 1)声明一个函数为了找到这个箱子,得给箱子贴上标签,这个标签就是c++中函数的声明。声明函数的语法格式如下: 返回类型标识符函数名(形式参数表); 例定义一个加法函数 int Add(int a ,int b); 返回值类型为int,表示该函数计算结果的返回值返回给它的调用者。如果函数只执行一些动作,无需返回值,则可以用void作为返回值的类型。 Add就是该函数的标签,变量命名重在说明它是什么,而函数命名重在说明它做什么。 形式参数表的语法格式:数据类型1 参数名1,数据类型子2 参数名2.。。。 形式参数表要有明确的数据类型。形式参数表中每个参数必须有明确的数据类型说明符。形式参数可以有默认值。这些默认参数必须位于形式参数表的末尾。 没有形参时可以用void代替或留空。 2)定义这个函数。 函数的定义紧接着函数的声明进行的,语法格式如下: 返回类型标识符函数名(形式参数表) { 函数定义; } 如: int Add( int a,int b)//声明 { int nResult = a + b; //函数定义 return nResult; //函数放回值 } 如果函数有返回值,需要用return 将结果返回给函数调用者。 2、函数调用 通过下面的形式调用函数库或自己定义的函数: 返回值变量= 函数名(参数); 例int nResult = Add(1,2); 实现了对Add函数的调用,函数执行完的返回值保存到nResult中。 函数调用的本质就是将一部分工作交给其他人完成。 主调函数与被调函数:函数中调用的函数是被调函数,调用别的函数的函数是主调函数。 c++支持函数的嵌套调用,被调用者还可以作为做主调用者去调用其他函数。嵌套调用的意义就是不断细化分解一个较大任务。 经常使用头文件来引入其他函数的声明,所以要想使用某个函数,就要先引用它所在的头文件。对于自己定义的函数,必须在函数被调用之前进行声明。否则,会产生这个函数找不到标识符的错误。 3、参数传递 通过实际参数和形式参数可以实现从函数外部向函数内部传递数据。 如 int nResult = Add(1,2) 将实际参数1,2 赋给函数Add ()中的a ,b 参与运算。 4、返回值 函数调用表达式的值就是从函数箱子中取出的数据,这个数据个类型就是函数的返回值类型。除了可以对变量赋值之外还可以使用函数调用表达式直接进行计算,将其应用在任何可以使用此类类型数值的地方。 5、内联函数 用体积来换取速度,省去了函数调用的过程。编译时直接把函数的代码插入函数调用的位置。内联函数的声明: inline 返回类型标识符函数名(形式参数表) { 函数体语句; } 内联函数使用规则: 要短小精悍,一般不要超过5行; 执行的时间要短; inline关键字仅是一种建议。 6、重载函数 重载函数就是让一个函数承载多种功能,具有多种含义,就是让同一个函数名表示多种意义。以统一的形式实现对不同数据的处理,就是函数重载的定义。 两个函数,因为实现的功能相似,所以取相同的的函数名,但是参数的个数或类型不同,这就是函数重载。而这两个函数就被称为重载函数。 这些重载函数因为实现的功能相似,所以有相同的函数名,但是因为接受的输入参数不同,所以有不同的实现。只要发现程序中有多个函数的意义相似,只是处理的数据不同,就可以使用重载函数。 编译器是通过函授的参数类型和个数来区分重载函数的不同版本的。所以只有相互之间的参数类型或个数不同,才可以构成合法的重载函数。如果两个函数仅仅是返回值类型不同,并不能构成重载。 在重载函数中应该尽量避免使用默认参数,让编译器能够准确无误的找到匹配的重载函数。 7、函数声明的设计规则 函数的声明也称为函数的接口。在设计实现函数时,不仅要让函数功能正确,还要让接口清晰明了。提高可读性。 1)使用动词+名词的形式给函数命名 函数是对功能的封装,功能往往表现为动作和相应的对象。所以要使用动宾短语。 2)使用完整清晰的形式参数名,表达参数的含义。例: 3)参数的顺序要合理 某些情况表示特定意义的参数的顺序已经具有了业界普遍的遵循的规则,如复制字符串:要把目标字符串作为第一个参数,源字符串做第二个。 4)避免函数有太多参数 参数不要过多,应该控制在5个以内,确实需要很多,可以使用结构体。 5)使用合适的返回值。 8、函数体的设计规则 1)在函数体的入口处对参数的有效性进行检查。 如果需要对无效的参数进行处理,可以采用条件语句,根据参数的有效性对用户进行提示或直接返回函数执行失败信息等。 如果无需处理无效的参数,可以简单的使用断言(assert)来对参数有效性进行判断。 2)谨慎处理函数的返回值 如果函数有返回值,则不可返回一个指向函数体内部声明的局部对象的指针或引用。因为这些局部对象会在函数执行结束时自动销毁,这些指针或引用所指向的数据变得无效,成为野指针。 3)函数的功能要单一 4)函数主体不宜太长 尽量控制在100行代码之内。 第六章当c++爱上面向对象 1。结构化程序设计 从问题出发,逐步求精的开发方法称为结构化程序设计方法。 缺点:数据和操作时相互分离的,如果数据格式变化,相应操作函数就要改写,遇到系统需要功能扩展,要修该大量功能函数。 2、面向对象程序设计 面向对象程序设计思想认为:现实世界时由很多彼此相关并互通实体的对象组成的。每个对象由两部分组成,描述对象状态或属性的数据和描述对象行为或功能的函数(方法)。结构化程序设计思想将数据和函数分开,而面向对象程序设计思想将数据和函数结合共同构成对象准确的描述现实世界。 3、面向对象的三座基石:封装、继承与多态 1)封装 对象就是封装这些数据和操作这些数据的算法的逻辑实体。 封住机制可以对数据加以保护。 2)继承 继承时可以让某个类型的对象获得另一个类型的对象的属性的方法。 3)多态 多态是指不同对象在不同的情况下具有不同的能力。例如,求和操作,如果操作的数据时数就是两个数求和,如果操作的是字符串,则它是连接两个字符串。“见人说人话,见鬼说鬼话”。 面向对象程序设计的优势: 1)容易设计和维护 2)复用程序和代码,程序质量高 3)容易扩展 利用继承、封装和多态的特性可以设计出高内聚、低耦合的系统结构。 4、类 面向对象思想将显示世界所有的物体都封装成对象,而类时所有相同对象的抽象,是他们总体的描述。 声明一个类的语法格式: class 类名:public 基类名 { public: //公有成员,通常用来定义类的行为,提供接口供外部访问 protected: //保护型成员 private: //私有成员,通常用来定义类的属性 }; 通常用一个名词来描述这个类所代表的一类对象,后面试类的继承方式和基类名,若没有基 类,这一部分可以省略。 ●C语言入门手册 ●这里不是教你什么知识,而是给你澄清一些资料,只给对编程一窍不通的或 者刚入门的人看。如果你尚未学习或者才学习不够一天,一定要看这手册,这份手册已经讲述的知识,我们不会在版面给予回答,此手册我会尽量保持准确,但如有不正确,请指正,我也会不断更新此手册 ●Q:什么是C? ●A:一门面向过程的计算机语言,发明至今已经差不多有三十年历史,由于 它相对其他高级语言高效,运行效率又比较接近低级语言,所以至今仍得到广泛的引用,无论你用windows还是linux,你现在看到东西的底层都是用C 写的,而大部分的网络协议都是用C实现的,画面最漂亮的游戏用C实现的,工业控制程序也是用C实现的。C不是万能,也不是垃圾,只是一门某些方面适用,某些方面不适用的语言 ●Q:什么是C++? ●A:一门面向对象的计算机语言,发明至今已经有二十多年了。由于面向对 象编程对程序架构有较好的帮助,因为比较适合构建大型的系统(当然,学术界对此存在争论),但无论如何,C++由于和C一样接近底层,而且又面向对象,所以也得到广泛的使用。C++不是万能,也不是垃圾,只是一门某些方面适用,某些方面不适用的语言,不要向某一个笨蛋一样认为c + 类== c++ ●Q:TC,VC,BC,BCB是什么?有什么区别?谁好? ●A:它们都是开发C/C++的开发环境,是软件。它们是不同时期由不同公司 发行的软件Turbo C ,Borland公司在八十年代末期发行的C语言的开发环境Turbo C++,Borland公司在八十年代末九十年代初发行的C++语言的开发环境Visual C++,Microsoft公司在九十年代至今发行的C/C++开发环境Borland C++,Borland公司在九十年代中发行的C/C++开发环境Borlan C++ Builder,Borland公司在九十年代后期至今开发的C/C++开发环境,与其他开发环境不用的是它属于快速应用程序开发(RAD),可以让你不写代码就能建立程序,当然它的运行效率见仁见智没有什么是万能的,不同场合用不同的东西而且C/C++还有很多开发环境,譬如gcc,watcom C++,Dev C/C++ ●Q:什么语言/开发环境最好? ●A:没有最好,只有最适用某方面 ●Q:需要什么基础才能学C/C++ ●A:至少学过幼儿园语文,小学英语,小学数学才能学,所以先确定你拥有 小学学历,然后就能学了至于学习C++前是否需要学C,C++的发明者认为不用,但见仁见智 ●Q:如何更有效的学习C/C++? ●A:不断的看书+实践,先把书上的练习题做完再说,务必记住不要钻牛角尖, 很多初学者经常犯这样的错误,不要盲目的提出问题,现在看来是问题其实在以后的实践和学习中都会慢慢理解的,任何东西都需要一个过程。万万不可浮躁。 ●Q:TC能开发windows软件吗? ●A:不能,因为不同系统,生成的程序格式不同 ●Q:要多久才能成为高手? ●A:当你不再问这个问题的时候,总是会有比你技术高的人,也许你在你生 活的环境中没有,的确可以说你在这个小范围是高手,但是再在别的地方一定会有比你厉害的人只是你没有接触到而已 ●Q:学C/C++有什么用? ●A:先想想你为了什么而学,想不到就不要学 ●Q:学完C/C++又能怎样 ●A:没怎样,学是为了使用服务的,只证明你会一门语言,但不等于你会开 发软件。就像学外语,为的是跟外国人交际,但如果你不懂交际,即使精通英语,法语,日语,朝鲜语,阿拉伯语,西班牙语……还是不会跟人交际。 你应该继续学习软件开发的知识,包括数据结构,算法,软件工程等等,还有要提高数学水平,譬如微积分,离散数学,矩阵,概率,统计,数值分析。 ●Q:我有很多不懂,怎么办? ●A:查帮助,搜索引擎。最著名的帮助文档叫MSDN,我们主要使用其光盘发 行版,D版可以从电脑城买,正版可以去微软订购,如果没有光盘可以去https://www.360docs.net/doc/c412887277.html,查询。 ●二、开始学习了 ●Q:我在TC看到缺少cos.obj的提示,为什么? C#学习笔记 1.C#具有所有面向对象的语言的所有特性:封装,继承,多态。在C#系统中,所有的类型都可以看作一个对象。 C#只允许单继承,即一个类不会有多个基类,C#不会有全局函数,不会有全局变量,不会有全局常数,所有的一切只能封装在一个类中。 https://www.360docs.net/doc/c412887277.html,包括四个部分:vos类型系统。元数据;公用语言规范;虚拟执行系统。 https://www.360docs.net/doc/c412887277.html,ing system表示导入名称空间。 让我们从第一个程序开始就记得:每个东西都必须属于一个类,类里面的方法总是为我们完成某件工作的。 在C#中,程序的执行总是从main()方法开始的,一个程序中不允许出现两个或两个以上的main()方法。对于习惯学C控制台程序的读者,必须要牢记:main()方法必须包含在一个类中。 利用string可以方便地对字符串进行连接或剪切。例:string s=”good”+”morning”;char x=s[3]字符串可以通过下标进行索引,得到一个字符。 6.我们可以用//进行单行标注,/* */进行多行标注。 在C和C++中,任何非0值都表示真,在C#中,任何非0值都不能代替true.在其它类型的整型值和布尔值之间不存在任何的转换,将整型转换成布尔型是不合法的。。 把一系列相关的变量组织成单一实体的过程称为生成结构的过程。这个单一实体的类型叫结构类型,每一个变量就是结构的成员。 9.结构类型包含的成员类型可以相同,也可以不同。我们甚至可以把一个结构类型当作另一个结构成员的类型。 枚举实际上是为一组在逻辑上密不可分的整数值提供便于记忆的符号。结构类型变量的值由各个成员的值组合而成。而枚举则不同,枚举类型的变量在某一时刻只能取枚举中某个元素的值。按照系统的设定,每个元素的类型都为整型。且第一个元素的值为0,后面的每个元素梯加1,也可以直接赋值。如把前面第一个元素的值设为1,后面的元素不用设,系统自动将后面元素的值递加1. C#中另一大数据类型是引有类型。其含义是该类型的变量不直接存储所包含的值,而是指向它所要存储的值。 也就是说引用类型存储实际数据引用值的地址。 类是面向对象编程的基本单位,是一种包含数据成员,函数成员和嵌套类型的数据结构。类和结构都包含了自己的成员,但它们的区别是:类是引用类型,而结构是值类型。 13.如果我们对某个类定义了一个变量,则我们就将它称为类的一个实例。 我们常用到的类:object类。这个类是其它所有类的基类,其它类型可以直接或间接地从object类中继承。因此,对一个object类的变量可以赋于任何类型的值。 代表?在声明代表时,只需要指定代表指向的原型的类型,它不能有返回值,也不能带有输出类型的参数。 如:delegate int Mydelegate().在使用的时候:Mydelegate d=new Mydelegate(p.instanceMethod).为什么不用delegate d=new Mydelegate(p.instanceMethod)呢?原因是delegate相当于class需要一个名字,class myclass{…}这个class的名字是myclass而且它包含有其它元素、常数或者函数,变量等。跟char a=a不同,它不包含有其它的元素,a就是一个变量。而myclass不是变量,它只一个名字。而myclass a=new myclass(); a才是变量,是类的一个实例。在这里,这个delegate的名字是Mydelegate,也并不是一个变量。 16.变量从用户角度来说,是存储信息的基本单元,从系统角度来说,变量就是计算机内存中的一个储存空间。 17.静态方法不能用类的实例来访问,必须用类名来访问。 数组的声明:数组的类型[数组的元素个数] 数组的名字;数组个数可以通过数组名加圆点加Length获得。如arr.Length表示arr数组的个数 19.在进行批量处理数据的时候,我们要用到数组.数组是一组类型相同的有序数据. 数组的初始化:int[] a1=new int[]{1,2,3};为什么是new int[],而不是new a1呢:因为int[]是类型,a1是int[]类型的一个实例.而且a1所代表的是{1,2,3},并不是函数.与delegate int Myclass();不同,Myclass()虽然是一个名字,但它可以代表一个函数,不是常数.原则:类型后面的名字如果可以代表函数,则这个名字就是一种类型.如果类型后面的名字代表常数,则这个名字不是一种类型,只是类型的一个变量.或者可以用另一种说法:如果名字后面含有(),{},[]则在赋值或设定实例的时候new后面要用该名字作为类型. 21.变量名不能与C#中的关键字名称相同。变量名不能与C#中库函数名称相同。 静态变量:static int a;一旦静态变量所属的类被加载,直到包含该类的程序运行结束前它将一直存在。 C#.NET是微软公司推出的一种类型安全、现代、简单、由C和C++衍生出来的面向对象的编程语言。掌握C#.NET的特点、程序结构、集成开发环境、C#语言的基本知识等,是利用好C#的前提。 本章内容 ?C#概述 ?C#语言基础 ?控制结构 ?数组 ?异常处理 1.1 C# 概述 C#是微软公司在2000年7月发布的一种全新的简单、安全、面向对象的程序设计语言。它是专门为.NET的应用而开发的语言。 https://www.360docs.net/doc/c412887277.html,简介 1..NET定义 .NET技术是微软公司推出的一个全新概念,它代表了一个集合、一个环境和一个可以作为平台支持下一代Internet的可编程结构。.NET的目的就是将互联网作为新一代操作系统的基础,对互联网的设计思想进行扩展,使用户在任何地方、任何时间、利用任何设备都能访问所需要的信息、文件和程序。.NET平台包括.NET框架和.NET开发工具等部分。.NET框架(Framework)是整个开发平台的基础,包括公共语言运行库和.NET类库。.NET开发工具包括Visual https://www.360docs.net/doc/c412887277.html,集成开发环境和.NET编程语言。.NET编程语言包括Visual Basic、Visual C++和新的Visual C#等用来创建运行在公共语言运行库(Common Language Run,CLR)上的应用程序。.NET框架结构如图1-1所示。 C#程序设计与案例教程 2 图1-1 .NET框架结构 2.公共语言运行库 公共语言运行库是.NET Framework 的基础。可以将运行库看成一个在执行时管理代码的代理,它提供核心服务(如内存管理、线程管理和远程处理),而且还强制实施严格的类型安全以及可确保安全性和可靠性的其他形式的代码准确性。事实上,代码管理的概念是运行库的基本原则。以运行库为目标的代码称为托管代码,而不以运行库为目标的代码称为非托管代码。公共语言运行库管理内存、线程执行、代码执行、代码安全验证、编译以及其他系统服务。这些功能是在公共语言运行库上运行的托管代码所固有的。 3..NET框架类库 .NET Framework 类库是一个与公共语言运行库紧密集成的可重用的类型集合,是对Windows API封装的全新设计,它为开发人员提供了一个统一的、面向对象的、分层的和可扩展的庞大类库。该类库是面向对象的,使.NET Framework 类型易于使用,而且还减少了学习.NET Framework 的新功能所需要的时间。此外,第三方组件可与.NET Framework 中的类无缝集成。 例如,用.NET Framework 集合类实现一组可用于开发您自己的集合类的接口。您的集合类将与.NET Framework 中的类无缝地混合。 .NET Framework 类型使您能够完成一系列常见编程任务(包括字符串管理、数据收集、数据库连接以及文件访问等任务)。除这些常见任务之外,类库还包括支持多种专用开发方案的类型。例如,可使用.NET Framework 开发下列类型的应用程序和服务:?控制台应用程序。 ?Windows GUI应用程序(Windows 窗体)。 ?https://www.360docs.net/doc/c412887277.html,应用程序。 ?XML Web services。 ?Windows 服务。 例如,Windows窗体类是一组综合性的可重用类型,它们大大简化了Windows GUI 的开发。如果要编写https://www.360docs.net/doc/c412887277.html, Web窗体应用程序,可使用Web窗体类。 1.1.2什么是C# 1.C#及其特点 C#是微软公司在2000年7月发布的一种全新且简单、安全、面向对象的程序设计语 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:之后语句不再执行,结束本次循环,开始下次循环; 51单片机C语言 相信很多爱好电子的朋友,对单片机这个词应该都不会陌生了吧。不过有些朋友可能只听说他叫单片机,他的全称是什么也许并不太清楚, 更不用说他的英文全称和简称了。单片机是一块在集成电路芯片上集成了一台有一定规模的微型计算机。简称为:单片微型计算机或单片机 (Single Chip Computer)。单片机的应用到处可见,应用领域广泛,主要应用在智能仪表、实时控制、通信、家电等方面。不过这一切都没 什么关系,因为我(当然也包括任何人)都是从不知道转变成知道的,再转变成精通的。现在我只想把我学习单片机的经历,详细地讲叙给大 家听听,可能有些大虾会笑话我,想:那么简单的东西还在这里卖弄。但是你错了,我只是把我个人学习的经历讲述一遍而已,仅仅对那些想 学习单片机,但又找不到好方法或者途径的朋友,提供一个帮助,使他们在学习过程中,尽量少走些弯路而已! 首先,你必须有学习单片机的热情,不是说今天去图书馆看了一个下午关于单片机的书,而明天玩上半天,后天就不知道那个本书在讲什 么东西了。还是先说说我吧,我从大二的第一个学期期末的时候才开始接触单片机,但在这之前,正如上面所说的:我知道有种芯片叫单片机, 但是具体长成什么样子,却一点也不知道!看到这里很多朋友一定会忍不住发笑。嘿嘿,你可千万别笑,有些大四毕业的人也同样不知道单片 机长成什么样子呢!而我对单片机的痴迷更是常人所不能想象的地步,大二的期末考试,我全放弃了复习,每当室友拿着书在埋头复习的时候, 我却捧着自己从图书馆借的单片机书在那看,虽然有很多不懂,但是我还是坚持了下来,当时我就想过,为了单片机值不值得我这样去付出, 或许这也是在一些三流学校的好处吧,考试挂科后,明年开学交上几十元一门的补考费,应该大部分都能过了。于是,我横下一条心,坚持看 我的单片机书和资料。 当你明白了单片机是这么一回事的时候,显而易见的问题出来了:我要选择那种语言为单片机编写程序呢这个问题,困扰了我好久。具 体选择C51还是A51呢汇编在我们大二之前并没有开过课,虽然看着人家的讲解,很容易明白单片机的每一时刻的具体工作情况,但是一合上 书或者资料,自己却什么也不知道了,根本不用说自己写程序了。于是,我最终还是决定学C51,毕竟C51和我们课上讲的C语言,有些类似, 编程的思想可以说是相通的。而且C51还有更大的优点就是编写大程序时的优越性更不言而喻,当然在那时,我并没有想的那么深远,C51的特 点,还是在后来的实践过程中,渐渐体会到的!朋友如果你选择了C51,那么请继续往下看,如果你选择了A51,那么你可以不要看了!因为下面讲 的全是C方面的,完全在浪费你的时间! 呵呵 ^_^ 第二,既然你想学好单片机,你必须得舍得花钱,如果不买些芯片回来自己动手焊焊拆拆的(但是在后期会介绍给大家一个很好用的硬件 仿真软件,并不需要你用实验板和仿真器了,直接在你的PC上完成,但是软件毕竟是软件,从某个特定的意义上来说是并不能代替硬件的),即使 你每天捧着本书,把那本书翻烂,也永远学不会单片机的!刚接触单片机的朋友,看了资料,一定会对以下几个词见的比较多,但是具体的概 C#工程项目学习笔记 using(C# 参考) using关键字有两个主要用途: 1作为指令,用于为命名空间创建别名或导入其他命名空间中定义的类型。 using指令有两个用途:允许在命名空间中使用类型,这样,就不必在该命名空间中限定某个类型的使用;为命名空间或类型创建别名,这称为“using 别名指令”。 2作为语句,用于定义一个范围,在此范围的末尾将释放对象。 partial(分部、类型)(C# 参考) 分部类型定义允许将类、结构或接口的定义拆分到多个文件中。UserControl 类 提供一个可用来创建其他控件的空控件。 IContainer 接口 提供容器的功能。容器是在逻辑上包含零个或更多个组件的对象。override (C# Reference) 要扩展或修改继承的方法、属性、索引器或事件的抽象实现或虚实现,必须使用override修饰符。 IDisposable .Dispose 方法 执行与释放或重置非托管资源相关的应用程序定义的任务。 base(C# 参考) base关键字用于从派生类中访问基类的成员:调用基类上已被其他方法重写的方法; 指定创建派生类实例时应调用的基类构造函数。 基类访问只能在构造函数、实例方法或实例属性访问器中进行。 从静态方法中使用base关键字是错误的。所访问的基类是类声明中指定的基类。ContainerControl .Dispose 方法 释放由容器占用的资源。 #region(C# 参考) #region使可以在使用Visual Studio 代码编辑器的大纲显示功能时指定可展开或折叠的代码块。在较长的代码文件中,能够折叠或隐藏一个或多个区域会十分便利,这样,可将精力集中于当前处理的文件部分。 https://www.360docs.net/doc/c412887277.html,ponentModel 命名空间ISupportInitialize 接口 指定该对象支持对批初始化的简单的事务处理通知。ISupportInitialize .BeginInit 方法 用信号通知对象初始化即将开始。 Control .SuspendLayout 方法 Label .AutoSize 属性 获取或设置一个值,该值指示是否自动调整控件的大小以完整显示其内容。Control .Location 属性 获取或设置该控件的左上角相对于其容器的左上角的坐标。 Point 构造函数 Control .Name 属性 获取或设置控件的名称。 Control .Size 属性 获取或设置控件的高度和宽度。 Size 构造函数 1.求两个数的最小公倍数: #include c语言学习心得体会一:c语言学习心得体会 c语言作为一种计算机的语言,我们学习它,有助于我们更好的了解计算机,与计算机进行交流,因此,c语言的学习对我们尤其重要。 在这个星期里,我们专业的学生在专业老师的带领下进行了c语言程序实践学习。在这之前,我们已经对c语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多东西还是很陌生,的在运用起来的时候还是感到很棘手,毕竟,万事开头难嘛。 由于时间的关系,我们的这次实践课程老师并没有给我们详细的介绍,只是给我们简单的介绍了几个比较重要的实际操作。包括了程序模块处理。简单界面程序。高级界面程序。程序的添加修改。用程序做一元线性回归处理以及用c语言程序来画粒度分布图等这几样比较重要的时间操作。 上机实验是学习程序设计语言必不可少的实践环节,特别是c语言灵活、简洁,更需要通过编程的实践来真正掌握它。对于程序设计语言的学习目的,可以概括为学习语法规定、掌握程序设计方法、提高程序开发能力,这些都必须通过充分的实际上机操作才能完成。 c语言学习心得体会二:c语言学习心得体会(1116字) c语言是在国内外广泛使用的一种计算机语言。其语言功能丰富、表达能力强、使用灵活方便、既具有高级语言的优点,又具有低级语言的许多特点,适合编写系统软件。其功能强大,不仅用在计算机上广泛用在电子,机械等方面上,而且,所有的 windows,unix,linux,mac,os/2,无一例外,哪一个不是c语言写的?很多新型的语言如,c++,java,c#,j#,perl... 都是衍生自c语言。掌握了c语言,可以说你就掌握了很多门语言。 学习c程序这门课一年了,这是我们学的第一门专业课,在大学里c语言不但是计算机专业的必修课程而且也是非计算机专业学习计算机基础的一门必修课程。所以作为我这个计算机专业的学生来说当然十分重要,老师在第一节课说过,c语言是计算机的基础,大多数软件都需要用c语言来编写,通过一个年的学习,使我由初步掌握简单的应试知识到完成高难度的深入编程,如我们在编写一个较大的程序时应该把它分开成几个小程序来看,这样会容易得多。同时,我觉得c语言应该是操作和理论相结合的课程,在不断地编写中去思考,两者是不可分割的。 C语言基础知识 第一章数据库基础知识 1.基本概念:数据库、数据管理经历的五个阶段、数据库管理系统、数据库应用系统、数据库管理员。 2.数据库系统的组成:硬件系统、数据库集合、数据库管理系统及相关软件、数据库管理员和用户。其中数据库管理系统是数据库系统的核心。 3.数据库系统的特点:(1)实现数据共享,减少数据冗余(2)采用特定的数据模型(3)具有较高的数据独立性(4)有统一的数据控制功能 4.数据模型:实体间联系的种类:一对一、一对多、多对多。 5.数据模型的三种类型:层次模型、网状模型和关系模型。 6.关系数据库基本术语:关系、元组、属性、域、关键字、外部关键字。 关系的特点 7.关系运算:传统的集合运算(并、差、交)另一类是专门的关系运算(选择、投影、连接、等值连接、自然连接) 8.VF两种运行方式:菜单方式和交互式方式(命令方式和程序方式) 9.所谓项目是指文件、数据、文档和对象的集合,其扩展名为.pjx。 10.项目管理器包含的选项卡:全部、数据、文档、类、代码、其他 11.项目管理器各选项卡所包含的文件有哪些? 12.项目管理器可以完成对文件的新建、添加、移去、删除,但不包含重命名。 第2章 1.常量的种类:数值型、字符型、日期型、日期时间型和逻辑型 在书写字符型、日期型、日期时间型和逻辑型需要加定界符 2.变量是值能够随时改变的量。变量名的命名规则:以字母、汉字和下划线开头,后接字母、数字、汉字和下划线构成,不包含有空格 3.当内存变量与字段变量同名时,要访问内存变量需加前缀M.(或M->),例如M.姓名4.数组定义的格式DIMENSION数组名()、 创建数组后,系统自动给每个数组元素赋以逻辑假.F. 5.表达式的类型:数值表达式、字符表达式、日期时间表达式和逻辑表达式。每个表达式的运算规则与结果。 6.运算符$称为子串包含测试,格式<字符表达式1>$<字符表达式2> 7.SET EXACT ON│OFF的区别与含义。 8.逻辑型运算符有三个:NOT、AND、OR,其优先级顺序为NOT、AND、OR 9.常用函数数值函数、字符处理函数、日期类函数、数据类型转换函数、测试函数10.常用函数:LEN()、SPACE()、LEFT()、RIGHT()SUBSTR()、AT()、DATE()、TIME()、YEAR()、STR()、 VAL()、CTOD()、宏替换函数:&字符型变量、EOF()、BOF()、IIF() 11.程序文件的建立和修改命令:MODIFY COMMAND程序名 12.程序的基本结构:顺序结构、选择结构、循环结构。 13.选择结构包括条件语句(IF—ELSE--ENDIF)和分支语句(DO CASE--ENDCASE)、14.IF----ENDIF必须成对出现,在do case结构中不管有几个CASE条件成立,只有最先成立的那个CASE条件的对应命令序列被执行 15.循环结构包括:DO WHILE---ENDDO FOR---ENDFOR SCAN---ENDSCAN(其 C#关键字 as:一个转换操作符,如果转化失败,就返回null; base:用于访问被派生类或构造中得同名成员隐藏的基类成员; bool:表示布尔值的简单类型; break:用于从loop或switch语句中推出得跳转语句; byte:表示8位长度无符号整数的简单类型; case:指定在switch语句中的一个标签。如果标签中指定的常量与switch表达式的值匹配,与标签关联的语句就被执行; catch:定义一个代码块,在特定类型异常抛出时,执行块内代码。参加try和finally; char:表示16位Unicode字符的简单类型; checked:既是操作符又是语句。确保编译器和运行时检查整数类型操作或转换时出现的溢出; class:指明一个声明得类类型声明; const:标识一个可在编译时计算出来的变量值,即一经指派不可修改得值; continue:用于返回循环顶部的跳转语句; decimal:表示128位高精度十进制数的简单类型; default:在switch语句中,指定一组语句,如果前面没有匹配得case子句,就执行这些语句; delegate:指定一个声明为一种委托类型。委托把方法封装为可调用实体,能在委托实体中调用; do:一个条件语句,无论条件是否满足,都执行至少一次; double:表示64位双精度浮点值得简单类型; else:if条件语句的一部分,如果条件不为真则执行else后面的语句。 enum:表示一个已命名常量群集得值类型; event:允许一个类或对象提供通知得成员,它必须是委托类型; explicit:一个定义用户自定义转换操作符的操作符,通常用来将内建类型转换为用户定义类型或反向操作。必须在转换时调用显式转换操作符; extern:标识一个将在外部(通常不是C#语言)实现的方法; false:一个布尔字面值; finally:定义一个代码块,在程序控制离开try代码块后执行。参见try和catch关键字; fixed:在一个代码块执行时,在固定内存位置为一个变量指派一个指针; float:表示32位单精度浮点值得简单类型; for:定义一个循环语句,只要指定条件满足就继续执行; foreach:用于遍历一个群集的元素; goto:一个跳转语句,将程序执行重定向到一个标签语句; if:一个条件语句,根据一个布尔表达式的值选择一个语句执行; implicit:一个操作符,定义一个用户定义的转换操作符。通常用来将预定义类型转换为用户定义类型或反向操作。隐式转换操作符必须在转换时使用; in:foreach语句遍历语法的一部分,被放在变量名与要遍历的群集之间; #include getch(); } #include 数组 2010-3-29 22:40 一维数组的定义和一维数组的引用 内存中一串连续的存储单元(变量),叫数组。指针移动和比较只有在一串连续的数组中才有意义。 当数组中每个变量只带一个下标时,为一维数组。 定义一个一维数组: 类型名数组名【常量表达式】如:int a[8]; 说明:①定义一个一维整型名为a的数组。 ②方括号中规定此数组有8个元素,(a【0】-a【7】),不存在a【8】这个元素。 ③a数组中每个元素均为整型,且每个元素只能存放整型。 ④每个元素只有一个下标,且第一个元素的下标总为0。 ⑤c编译程序,为a数组开辟8个连续存储单元。 3)在定义数组语句中,可以有多个数组说明符;它们用逗号隔开。 例:double a【22】,v【100】,u【5】,a,b,c;注:双精度型每个单元占用8个字节的存储空间。另外,也可以和普通变量一起定义。 用逗号分隔开。 2010-3-23 10:29 一维数组元素的引用2 1) 引用形式:数组名【下标表达式】可以是:常量,变量,表达式。 如:double x【8】则x【0】x【j】x【i+k】均合法 2) (1)一个数组元素实际上就是一个变量名,代表内存中的一个存储单元。我们可以把数组元素看做一个变量名来处理。 (2)一个数组不能整体引用,数组名中存放的是一个地址常量,它代表整个数组的首地址。当学习指针时,引用的变量的地址,就是变量中第一个字节的地址。数组的首地址也是它的第一个元素的第一个字节的地址,即它的首地址。 数组的首地址存放在数组名中。所以说,数组名就代表一个地址。数组名是一个地址值。 (3)在引用数组元素时,数组元素下标表达式必须是整数,下标表达式下限为0.系统并不自动检验数组元素下标是否越界,因此编程时要注意。 如:double a,b; int c[10]; a=2.0;b=3.0; 则a[i]; 是不合法的。 给数组赋初值时,如果所赋初值少于元素个数时,后面的元素补为0,字符补为’\0’可以通过赋初值来定义一个数组的大小。如:int a[]={0,0,0,0,0}; 相当于:a[5]={0}; 『C程序设计』读书笔记 关键字:c语言 原作者姓名:loose_went 文章原出处:https://www.360docs.net/doc/c412887277.html, 写在前面: 《C程序设计》可以说是一本再基础不过的编程书了,但每读一遍的感觉却都是不同的,可以说,每读一遍,都会有很多新的收获。真所谓老书再读,回味无穷啊!此笔记是《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.实型数据 实型常量表示形式:十进制形式由数字和小数点组成(必须有小数点),如:0.12、.123、123.、0.0等。指数形式如123e3代表123×10的三次方。 实型变量分为单精度(float)和双精度(double)两类。在一般系统中float型占4字节,7位有效数字,double型占8字节,15~16位有效数字。 5.字符型数据 字符变量用单引号括起来,如'a','b'等。还有一些是特殊的字符常量,如'\n','\t'等。分别代表换行和横向跳格。 字符变量以char 来定义,一个变量只能存放一个字符常量。 字符串常量是由双引号括起来的字符序列。这里一定要注意'a'和"a"的不同,前者为字符常量,后者为字符串常量,c规定:每个字符串的结尾加一个结束标志'\0',实际上"a"包含两个字符:'a'和'\0'。 6.数值型数据间的混合运算 整型、字符型、实型数据间可以混合运算,运算时不同类型数据要转换成同一类型再运算,转换规则: char,short -> int -> unsigned -> long -> double <- float 7.运算符和表达式 c运算符包括: 算数运算符(+ - * / % ) 关系运算符( > < == >= <= != ) 网络通讯中数据大小端的问题: 大端模式:高位字节放在内存的低地址端,即该值的起始地址;低位字节排放在内存的高地址端。 小端模式:低位字节放在内存的低地址端,即该值的起始地址;高位字节放在内存的高地址端。 数组的名字是一个常量指针,如X【2】,X是一个常量指针,没有分配的内存。 数据存在存储空间,数值不存在。 在C语言里,指针可以访问到任何地方,但是对不应该访问的地址进行访问没有意义,也可能会禁止读写。 函数的接口类型,可变参数的类型和执行跳转: C语言的函数名可以看做一个地址常量(和数组一样)。 系统的堆栈:堆和栈的第一个区别就是申请方式不同:栈(英文名称是stack)是系统自动分配空间的,例如我们定义一个char a;系统会自动在栈上为其开辟空间。而堆(英文名称是heap)则是程序员根据需要自己申请的空间,例如malloc(10);开辟十个字节的空间。由于栈上的空间是自动分配自动回收的,所以栈上的数据的生存周期只是在函数的运行过程中,运行后就释放掉,不可以再访问。而堆上的数据只要程序员不释放空间,就一直可以访问到,不过缺点是一旦忘记释放会造成内存泄露。、 、 预处理操作: 宏定义:#define M 3; #define M(x,y) 2*x+y; 预处理对宏的处理,分为3类: 预处理“标识符”的展开; 预处理“标识符”的判断; 预处理“标识符”的文本替换。 #if 0 。。。。 #endif 用作代码注释。 基础类型重定义:一个C程序在PC上开发,逻辑验证正确后,下需要移植到某个嵌入式系统中,但是它们对应的int的位宽定义不同,目标系统是X86时,编译器将其看做32位,而目标系统为嵌入式系统的时候,编译器将其看作16位(对应的32位为long关键词)。这种情况,就需要进行基础类型的重定义: #define _TARGET_X86_SYSYTEM 0 #define _TARGET_DEV_SYSYTEM 1 #define _TARGET_SYSYTEM _TARGET_X86_SYSYTEM #if(_TARGET_SYSYTEM = _TARGET_X86_SYSYTEM) Typedef signed int _i32 Typedef unsigned int _u32 #elif(_TARGET_SYSYTEM = _TARGET_DEV_SYSYTEM) 初学C语言常用简单程序代码素数的筛选 #include main() { int x,s,t,d; scanf("%d",&x); s=x%60; t=(x/60)%60; d=(x/60)/60; printf("%d时%d分%d秒",d,t,s); } 三个数的交换 #include C语言高级编程 2015年2月4日 16:09 ?常用ubuntu命令 printf("%p",&a);//打印变量a的地址?内存结构 ?编译四步骤 ?数据类型 告诉CPU如何读写内存。 基本数据类型:char,short,int,long,float,double...... 构造数据类型:数组,结构体,联合体。 指针类型: 空类型:void C语言中数据类型的字节长度 ?局部变量 生命周期从定义开始到函数结束,作用域在当前函数模块内。 ?全局变量 生命周期从编译开始到程序运行结束。作用域在变量定义之下。全局变量的内存地址在编译的时候就已经确定,所以无论程序运行多少次全局变量的地址都不会改变。 全部变量和局部变量重名的话全局变量就会被屏蔽。 ?static 作用:用于声明一个静态变量。不初始化存储在bass区并且自动赋值为0,初始化过的存储在data区。 生命周期:从编译开始到程序运行结束。 作用域:static修饰的局部变量,作用域在局部。static修饰的全局变量,作用域在定义之下,可见域在当前文件中。static修饰的变量外部文件无法调用。 static修饰函数用于隐藏该函数,函数可见域只在当前文件内。 ?extern 引用外部变量。 ?const 声明一个只读变量。 指针 int * p; 指针的值:p为指针变量,用来存储地址。p的值为指向的空间的地址值。 指针的类型:int *为p的类型(所有的指针类型都占4个字节,char *也占用4个字节)。 指针指向的类型:int为指针指向的空间的数据类型。 指针指向的值:*p为指针指向的值,指针指向的空间的间接引用(别名)。 指针的赋值:要操作指针必须给指针一个合法的指向。 指针初始化:char *p=NULL; 强制类型转换: char *p = NULL; int a = 258; p = (char *)&a; *p = 2;//溢出 //cha *类型指针只能指向char类型空间地址,如果要操作其他类型空间需 要强制类型转换。char *类型指针只能操作char类型空间,就是一个字节 的空间。 任何数据类型之间都可以强制类型转换,指针之间不会隐式转换。类型不 匹配不能进行运算或赋值。强制类型转换仅仅是在运算过程中有效,并没 有改变变量或者地址的类型。 赋值的规则:类型匹配。 int a; int *p=&a; int **q=&p;C语言入门手册
【G】C学习笔记c重点整理
c语言基础
C学习笔记
C语言入门教程____免费下载
C工程项目学习笔记
C语言初学者的几个经典习题
C语言学习心得体会 篇
C语言基础知识1
C学习笔记
简单易懂的C语言源代码(供初学者使用)
c语言学习笔记(数组、函数)
C程序设计 读书笔记
c语言学习笔记
初学C语言常用简单程序代码
C语言高级编程学习笔记