您的位置:首页 > 编程语言 > C语言/C++

C语言总结

2015-12-12 11:11 260 查看
软件是一系列按照特定顺序组织的计算机数据和指令的集合。

程序由指令和数据组成,指令通常由几个字节组成。

程序语言的发展:

机器语言(二进制语言):由 0 和 1 组成,主要做硬件和底层,面向机器;

汇编语言 :主要做硬件和底层,面向机器,它是机器语言的一种助记符;

高级语言 :主要做软件开发,面向用户;

软件开发的基本步骤 :

程序设计 :

建立数学模型(模型的好坏对错很大程度上决定程序的正确性和复杂程度)

确定数据结构和算法

编制程序

调试程序

算法的特征 :

有穷性

无效性

确定性

有零个或多个输入

有一个或多个输出

算法的表示—流程图 :

流程图又称框图,是一种图形解法,它用规定的一系列图形、流程线及文字说明来表示算法中的基本操作和控制流程。

优点:形象直观、简单易懂、便于修改和交流。

常用的有“ 起止框、输入/输出框、处理框、判断框 ”。

控制流程:1、顺序结构(按照一定的规定依次进行);2、选择结构(有等于或大于两种的分支);3、循环结构。

编码的实现(创建程序) :

编写源代码 (计算机只懂的二进制代码)

将源代码编译成目标代码

链接目标代码到可执行程序

运行

调试程序 :

语法错误 (即不正确的语句)

逻辑错误 (即漏掉指令、指令顺序不对、不该出现的指令)

开发错误

运行时错误

编程语言的基本组成 :

主要有:基本字符集、标识符、关键字、语句、标准库函数

字符集 :

数字字符 :0、1、2、3、4、5、6、7、8、9。

拉丁字符:A、B、C、、、、Z、a、b、c、、、、z (字母的大小写意义不同)

运算符: “+”、“-”、“*”、“/”、“%”、“=”、“<”、“>”、“<=”、“>=”、“!=”、“==”、“<<"、“>>”、“&”、“|”、“&&”、“||”、“(”、“)”、“[”、“]"、“!”、“;”、“.”

特殊符号和不可显示字符:_(连字符或下划线)、空格、换行、制表符

标识符 :

由C语言字符集中的字母、下划线、数字组成,首字符必须是字母或下划线,不能以关键字命名。且标识符中同一字母的大小写是不同的字符。

关键字 :

auto break case char const continue default do

double else enum extern float for goto if

int long register return short signed sizeof static

struct switch typedef union unsigned void volatile while

语句 :

关键字和标识符按照一定的语法规则组成语句,它们都有确定的形式和功能。

选择语句 :if 、switch

流程控制语句和循环语句 :for 、 while 、 do_while

转移语句 :break 、 continue 、 return 、 goto

表达式语句

复合语句

空语句

标准库函数:

标准库函数又称类库函数,是语言处理系统中一种重要的软件资源。

形式:#include <头文件名> 或 #include “头文件名>” 。

C程序的基本结构 :

#include <stdio.h> /*引入外部文件*/

int main (void) {

int a; /*定义一个名为a的变量*/

a=1 ; /*为a赋值*/

printf(" 我喜欢的数字是%d 。\n”,a); /*使用printf()函数*/

return 0; /*返回值*/

}

1、一但前面有数据类型,后面就必须有一个返回值;

2、{、、、} 里面的内容叫做 “ 函数体 ” ;

3、关键字+标识符+“;”构成语句;

4、main()是主函数,是一切程序的入口,有且只有一个;

5、函数由函数说明和函数体组成,函数说明包括对函数名、函数类型、形式参数等的定义和说明。

数值分类:

1、整型:无小数的值,分两类:有符号整型变量 无符号整型变量
数据类型 关键字 占用字节

字符型 char 1

无符号字符型 unsigned char 1

短整型 short 2

无符号短整型 unsigned short 2

整型 int 4

无符号整型 unsigned int 4

2、浮点型(实数):有小数的值

数据类型 关键字 占用字节

单精度型 float 4
双精度型 double 8

长精度型 long double 12

1、char 的大小为一个字节;

2、short 的长度不会超过 longd;

3、unsigned 的长度不会等于 int;

4、float 的长度不会超过 double。

数据在编程语言中的表现形式:

表达常量的方式有两种:字面量 、 符号常量

字面量:

整型常量(整数):没有小数点的数字,用十进制、八进制、十六进制三种形式表示;

实型常量(浮点数、实型数):带小数点的数字,有两种书写格式:小数形式 0.1234,指数形式 1234*(10*10*10*10) ;

字符型常量:是括在一对单引号内的一个字符

转义字符 功能

\n 换行

\t 水平跳格

\b 推格

\r 回车

\f 走纸换页

\\ 反斜线字符

\` 单引号字符

''' 双引号字符

\ddd 1至3位八进制数表示的字符

\xdd 1至2位十六进制数表示的字符

字符串常量:用双引号括起来的字符序列,如果字符串常数中出现双引号,则要用反斜线’\'‘将其转义。

符号常量:

用指定的标识符来表示某常量,在程序中需要使用该常量时就可以直接引用标识符。

变量:

变量:用来存储数据,遵循一定规律

变量名规则:

变量名必须以字母字符开头,也可以用下划线,但不推荐这么做;

在变量名中任何地方都可以使用任何字母、数字、下划线;

变量名不限长度;

变量名不允许出现空格或非字母字符,如+或-;

变量名不能是关键字;

变量名对大小写敏感。

变量声明:

变量名和它的数据类型,目的是由变量类型决定变量的存储结构,以便编译程序为变量分配内存空间。

同一行中声明多个同一类型的变量,需用逗号将变量名隔开。

格式: “ 数据类型声明符 变量名; ” 。

初始化变量:

int a;

a=2;

注意:不要把变量初始化为其数据类型之外的值。

数据的输入与输出:

格式化输出函数 printf :

格式:printf ("格式控制字符串",输出列表)

格式控制串由格式字符串和非格式字符串组成,格式字符串是以%开头的字符串;非格式字符串在输出时原样打印,起提示作用。

printf 格式字符串的形式:[ 标志 ] [ 输出最小宽度 ] [ . 精度 ] [ 长度 ] 类型

输出最小宽度:用整数来表示输出的最少位数,若实际位数多余定义宽度,则按实际位数输出,若实际位数少于定义宽度,则补以空格或0.

类型: 格式字符 意义

d 以十进制形式输出带符号整数(正数不输出符号)

f 以小数形式输出单、双精度实数

c 输出单个字符

s 输出字符串

格式化输入函数 scanf:

格式:scanf ("格式控制字符串",地址列表)

地址列表中给出各变量的地址,地址由地址运算符 “ & ” 后跟变量名组成。

& 是一个取地址运算符,&a是一个表达式,其功能是求变量的地址。

scanf 格式字符串的形式:%[ * ] [ 输入数据宽度 ] [ 长度 ] 类型

类型: 格式字符 意义

d 输入十进制整数

f 输入实型数(用小数形式或指数形式)

c 输入单个字符

s 输人字符串

运算符:

算术运算符:

" + " 、 " - " 、 " * " 、 " / "(整数除以整数,结果只能是整数) 、" % "(取模、取余)

赋值运算符:

a=12(将12赋值给名为a的变量)

增量和减量运算符:

前缀形式:++变量(先进行加1的操作,再变量),- -变量(先进行减1的操作,再变量);

后缀形式:变量++(先变量,再进行加1的操作),变量- -(先变量,再进行减1的操作)。

关系运算符:

相等运算符(==):两边表达式相等,打印 1 ,不等打印 0 ;

不相等运算符(!=):两边表达式不相等,打印 1 ,相等打印 0 ;

大于运算符(>):表达式正确打印 1 ,表达式不正确打印 0 ;

大于等于运算符(>=):表达式正确打印 1 ,表达式不正确打印 0 ;

小于运算符(<):表达式正确打印 1 ,表达式不正确打印 0 ;

小于等于运算符(<=):表达式正确打印 1 ,表达式不正确打印 0 ;

逻辑运算符:

逻辑与(&&):两个关系表达式正确打印 1 ,否则为 0 ;

逻辑或(||):只要有一个表达式正确就打印 1 ,只有两个表达式都错时才打印 0 ;

逻辑非(!):两个关系表达式正确打印其相反的,即 0 , 两个关系表达式错误打印其相反的,即 1 ;

条件运算符:

C语言提供的唯一三目运算符。

格式:表达式1 ? 表达式2 : 表达式3

表达式1:关系表达式;表达式2和表达式3可以是任意表达式

数据类型强制转换运算符:

自动类型转换:

类型级别(高--低):long double 、double 、float 、unsigned long 、long 、unsigned int 、int

有提升和降级两种,提升即转换为高得类型;降级即转换为低的类型。

强制转换:

格式: ( type ) 表达式

type 表示一个强制数据类型名,表达式是任何一种类型的表达式。

特殊运算符:

长度运算符 sizeof :

格式:sizeof ( opr ) (opr)表示所要运算的的对象,可以是表达式或数据类型名。

运算含义:求出运算对象在计算机的内存中所占字节数,单目运算符。

取址运算符 & :单目运算符。

语句:

流程控制语句:

选择语句:if 、switch

循环语句:for 、do 、do_while

转移语句:break 、continue 、return 、goto

表达式语句:

运算符、常量、变量等组成表达式,而表达式后加分号就构成表达式语句。

复合语句:

用一对大括号括起来一条或多条语句,称为复合语句。

复合语句的 " } " 后面不可以出现分号。

空语句

赋值语句

用if语句设计选择结构程序:

简单 if 语句:

if语句是实现选择语句最简单直观的方法,判断某条件值是否为真,为真,则执行一段代码。

格式: if(表达式) {

语句1

}

if_else 语句:

计算表达式的值,若表达式值为 “ 真 ” ,执行语句 1 ,并跳过语句 2 ,继续执行if_else语句的下一跳语句;

若表达式值为 “ 假 ” ,跳过语句 1 ,执行语句 2 ,继续执行if_else语句的下一跳语句。

格式: if(表达式) {

语句1

}
else {

语句2

}

嵌套的 if 语句:

嵌套形式1: if (表达式1)

if (表达式2)语句1

else 语句2

else 语句3

嵌套形式2: if (表达式1){
if (表达式2)语句1

}

else 语句2

嵌套形式3: if (表达式1){

语句1

}

else if (表达式2){
语句2

}

else 语句3

用switch语句设计选择结构程序:

C语言中,switch语句专用于实现多分支结构程序,其特点是各分支清晰而直观

switch 语句:

switch(表达式1){

case 常量表达式1:语句1

case 常量表达式2:语句2

、、、、、、

case 常量表达式n:语句n

default:语句n+1

}

计算表达式的值,依次与常量表达式 i (i=1,2,. . . ,n)比较,若表达式的值与常量表达式 j 相等,则从 j 开始执行,知道switch语句结束

若所有常量表达式 i (i=1,2,. . . ,n)均不等于表达式,则从default执行。

break 语句:

终止它所在的switch语句或循环语句的执行

break语句只出现在switch语句或循环语句中

无条件转换语句:

格式: goto 语句标号;

、、、、、

语句标号:

goto 语句无条件转向语句标号所标识的语句执行,它将改变顺序执行方式

循环的基本结构:

当到型循环(while 和 for ):先判断,后执行;判断表达式是否为真,“真”执行循环体,“假”结束循环。

直到型循环(do_while):先执行,后判断;执行循环体,再判断表达式,“假”继续执行循环体,“真”结束循环。

用while语句设计循环结构程序:

格式: while (表达式)

循环体语句

当到型循环,先判断后执行

用do_while语句设计循环结构程序:

格式: do {

循环体语句

}while (表达式);

直到型循环,先执行后判断

用for语句设计循环结构程序:

格式: for (表达式1;表达式2;表达式3)

循环体语句

当到型循环,先判断后执行
表达式1:为循环变量赋初值的表达式;表达式2:控制循环的表达式;表达式3:改变循环变量值的表达式。

计算表达式1的值;然后检测表达式2的值,为“真”,执行循环体结构,执行完后再计算表达式3。 然后,再检测表达式2的值,为“真”,执行循环体结构,、、、、为“假”,终止循环。

break语句与continue语句:

break语句:终止它所在的switch语句或循环语句的执行。

continue语句:结束本次循环/9不是终止循环),即跳过循环体中continue语句后面的语句,开始下一次循环。

数组的基本概念:

数组,就是按一定顺序排列,具有某种相同性质的同类型变量的集合。

这些变量具有相同的名字和数据类型,数据中的各数据项称为数组元素,用数组名和下标表示。

一维数组:

格式: 数据类型 数组名 [ 整型常量表达式 ]

数组名用标识符表示,整型常量表达式代表数组具有的数组元素个数;

数组元素的下标一律从 0 开始;

编译程序为数组开辟连续的存储单元。

一维数组的引用:

定义时整型常量表达式与引用时的数组元素的下标表达式是完全不同的概念。定义时:int a [ 5 ] ,因为下标从0开始,所以引用时没有 a [ 5 ]。

一维数组的初始化:

格式:数据类型 数组名[ 整型常量表达式 ] = {初值1,初值2,、、、};

二维数组:

格式: 数据类型 数组名 [ 整型常量表达式 ] [ 整型常量表达式 ]

数组名用标识符表示,两个整型常量表达式分别代表数组具有的行数和列数;

a [ 2 ] [ 3 ] 有2行3列,共2*3=6个数组元素;

a数组行下标为 0、1,列下标为 0、1、2;

a数组的数组元素有:a [ 0 ] [ 0 ],a [ 0 ] [ 1 ],a [ 0 ] [ 2 ]

a [ 1 ] [ 0 ],a [ 1 ] [ 1 ],a [ 1 ] [ 2 ]

二维数组的初始化:

格式:数据类型 数组名[ 整型常量表达式 ] [ 整型常量表达式 ] = {初始化数据};
分行初始化: int a [ 2 ] [ 3 ] = { {1,2,3},{4,5,6} };

不分行初始化:int a [ 2 ] [ 3 ] = { 1,2,3,4,5,6 };

部分初始化:int a [ 2 ] [ 3 ] = { {1,2},{4} };把1赋值给a [ 0 ] [ 0 ],把2赋值给a [ 0 ] [ 1 ] , 把4赋值给a [ 1 ] [ 0 ];

字符数组和字符串:

字符串常量是一串用双引号括起来的字符序列;

C语言中只能用字符数组来表示字符串;

字符串在内存中的存放形式是按串中字符的排列次序顺序存放,每个字符占一个字节,并在末尾加“\0”作为终结标记。

结构型(struct):

声明格式为:

struct 结构名 {

数据类型1 成员名1;

数据类型2 成员名2;

、、、、、

数据类型n 成员名n;

}a;
这个分号,是必须要的!!

" a " 为结构体变量名;

" { } "中的称为 " 成员变量 " ;

" struct 结构名 " 为结构体类型名;

结构体类型名 相当于 基本数据类型;

结构体变量名 相当于 基本数据变量。

访问结构体变量的成员:

访问成员格式:结构体变量名.成员名 " . "是成员选择运算符!!

若要为字符串赋值汉字,可在结构体变量名后加“ = { } ”,花括号中间便可以赋值汉字,汉字由双引号括起来,值与值之间用“,”隔开。

eg:a={ " 张三 ",16 };

内存:

结构体变量所占内存长度一般等于各成员占的内存长度之和

eg:

#include <stdio.h>
//共用体

struct people{

char name[20];

char gender[10]; //性别

char address[100] ; //住址

int age;

float salary; //工资

}z={"朝曦","女","太阳系地球南端" };

int main(void){

z.gender[10];

z.address[100];

z.name[20];

z.age=20;

z.salary=200.56;

printf("姓名:%s\n",z.name);

printf("性别:%s\n",z.gender);

printf("年龄:%d岁\n",z.age);

printf("住址:%s\n",z.address);

printf("工资:%0.2f元",z.salary);

printf("\n\n");

return 0;

}

联合型(union):

语法形式:

union 共用体名{

数据类型 成员名;

数据类型 成员名;

、、、、、
} 共用体变量名;

联合体又名“共用体”:

共用体变量所占的内存长度等于最长的成员的长度;

特点:

同一内存段可以用来存放几种类型不同的成员,但是某一时刻只能存放其中一种。也就是,在某一瞬时只有一个成员起作用。

共用体变量中起作用的是左后一个存放的成员,在存放一个新成员后,原有的成员就失去了作用。

共用体变量地址和成员地址都是同一地址。

不同对共用体变量赋值,也不能在定义共用体变量时对其初始化。

枚举型(enum):


语法形式:


enum 枚举名{

标识符 [ = 整型常数 ] ,

标识符 [ = 整型常数 ] ,

、、、、

标识符 [ = 整型常数 ] ,

};

C语言编译器将枚举元素当作是整型常量来处理,当遇到枚举元素列表时,编译器把其中第一个元素赋值为0,第二、第三、、、个依次赋值为1,2、、、。

如果枚举元素没有初始化,即省掉 ” =整型常数“ 时,则从第一个标识符开始,顺次赋给标识符0,1,2、、。当某成员赋值后,其后成员按依次加1的规则确定值。

注意:

枚举中每成员(标识符)结束符是 " , " ,不是 ";",最后一个成员可省略逗号。

初始化时可赋负数,以后的枚举元素依次加 1 。

指针类型:

int i , j ;

int *pointer1,*pointer2;

pointer1,pointer2都是指向整型的指针变量,左边的 int 是定义指针变量时必须指定的基本类型,指针变量的基本类型用来指定该指针变量可以指向的变量的类型

根据变量名与地址的对应关系,它会找到变量的地址,然后地址中取出数据将它输出。首先将键盘输入的值,送到相应的整型存储单元中。

声明指针类型的变量:

格式: 指向的变量的类型名 * 指针变量名;

指针变量的类型是 “ 指向的变量的类型名 * ”

指针是C语言中最有特色的内容,它功能强大而灵活,用指针编程可以使程序执行效率更高。

函数分类:

函数分为两类:一类是系统提供的标准函数,又称库函数。另一类是用户自己定义的函数。


函数的语法:

函数类型 函数名称 (形式参数) {

说明语句序列

可执行语句序列

}

函数名是唯一标识一个函数的名字。

形式参数用于调用函数和被调用函数之间的数据传递。

形参可以为空,也可以是多个形参组成,多个形参由逗号隔开。

函数的参数:

无参函数:调用时,主调函数不将数据传递给被调用函数;可以带或不带返回值。

有参函数:调用函数时,主调函数和被调函数之间有数据传输。

函数的返回值:

无返回值的函数:即void函数。无函数值的函数,一般涌来执行指定的一组。

有返回值的函数:调用函数后,可以通过函数名带回函数值供主调函数使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: