C语言学习总结——适用基础学习

目录

一:C语言数据结构

1.1数据结构

1.2C语言两种注释方式

1.3标识符

1.4变量和常量

常变量与符号常量:

1.5数据类型

 基本数据类型

字符型数据

2C语言运算符

1.6格式化输出语句

 二。分支结构之语句

1.控制语句

2.1if语句

2.2用while和do...while语句实现

2.3for语句实现

 2.4用switch语句实现多分支选择结构

2.5结束语句

一:break语句

二:continue语句

2.6循环语句之多重循环

 三.用函数实现模块化程序设计

 3.1定义函数的方法

1.定义无参函数

2.定义有参函数

3.定义空函数

3.2调用函数

1.函数调用的形式

2.形参与实参

 3.函数的返回值


一:C语言数据结构

1.1数据结构

1.include<stdio.h>是预处理命令用来提供信息,,stdio.h用来提供一个文件名,h是指头文件名

2.C程序是执行主函数源码,主函数main是C语言入口

int是main前面的主函数类型,在执行主函数之后会得到一个函数值,其值为整型

3花括号{}表示函数体,在{}输入函数

4.printf()是格式输出函数,在run中输出的信息

5.return 0是函数的返回值,函数数据不同返回值不同

6.\n是换行符即在输出"hello world"之后,显示屏上的光标移到下一行开头,光标位置称为输出位置开头

 注意:1.,一个说明或一个语句占一行

2.函数语句有明显缩进,用Tab键进行缩进

3.括号要成对写,删除要成对删除

4.每当一个可执行语句结束以后都要用分号;隔开

5.代码中的所有符号均为英文半角符号

1.2C语言两种注释方式

(1)以//开始单行注释。注释可以单独占一行,也可以在一行中其他内容的右侧。该注释从//开始,以换行符结束。该注释不能跨行,也只一行内容写不下,用多个单行注释

(2)以/*开始,以*/结束注释,该注释包含多行内容

两种形式

1.3标识符

C语言可以是英文字符,数字,下划线_组成的字符串,开头必须为字母或下划线

注:严格区分大小写

标识符是有意义的英文,不要使用中文

1.4变量和常量

常量含义:在执行过程中不可改变的量称为常量,常量分为直接常量和符号常量

直接常量:

   (1)整型常量:100,268

(2)实型常量:a十进制小数形式:123.658,751.725

                           b指数形式:12.4e5,-72.74e4

(3)字符常量:用单撇号括起来的字符:'A','3’,'&'

  (4)字符串常量:“I love zhuzhu!”

变量含义:是可以变化的量,每一个变量都有赋值,变量必须先定义,后使用,定义时区分变量名和变量值

变量一般形式:变量名。数据类型

常变量:方法在定义变量时,前面加上关键字const

常变量与符号常量:

 定义符号常量:#define指令为与编译指令,他只是用符号常量代表一个字符串,在预编译时进行字符替换,在预编译后,符号常量不存在

常变量:占用储存单元,有变量值

1.5数据类型

类型是对数据分配储存单元的安排,包括储存单元长度(占多少字节)以及数据储存形式。不同类型的分配不同长度和储存形式

 基本数据类型

数据的储存空间和值的范围
数据类型字节应用示例
int(基本整型)4用于存储整数int weight=45
char(字符型)1用于存储单个字符char me=M
float(单精度浮点型)4用于存储小数float x=1.3
double(双精度浮点型)8用于存储位数的多位小数double pi=3.1415

数据·常见的储存空间及值的范围

扩展八种整型数据类型

 注:int ,short int , long int根据编译的环境不同,所取范围也不同

字符型数据

1.字符与字符代码

 字母:大写字母A~Z,小写字母a~z

数字:0~9

专门符号:29个包括> ,= + - ; : "" ''~!$%^

空格符:空格,水平制表符(tab),垂直制表符,换行,换页(form feed)

2C语言运算符

1.基本运算符

(1)算数运算符(+ - * / %  ++  --)

(2)关系运算符(> <   ==   >=<=   !=)

(3)逻辑运算符(!&&  ||)

(4)位运算符(<<  >>  ~| ^&)

  (5)赋值运算符(=及其扩展赋值运算符) 

(6)条件运算符(?:)

(7)逗号运算符(,)

(8)指针运算符(*和&)

(9)求字节数运算符(sizeof)

(10)强制类型转换运算符((类型))

(11)成员运算符(. ->)

  (12)下标运算符([ ])

  (13)其他(如函数调用运算符)

2.自增(++),自减(--)运算符

作用:使变量的值加或减1

++i,--i(在使用i之前,先使用i的值加/减1)

i++,i--(在使用i之后,使i的值加/减1)

1.6格式化输出语句

printf(输出格式符,输出项)

 二。分支结构之语句

1.控制语句

(1)if()...else...(条件语句)

(2)for()...(循环语句)

(3)while()...(循环语句)

(4)do...while()(循环语句)

(5)continue(结束本次循环语句)

(6)break(中止执行switch或循环语句)

(7)switch(多分支选择语句)

(8)return(从函数返回语句)

(9)goto(转向语句,在结构化程序中基本不用goto语句)

2.1if语句

(1)if语句的一般形式
if(表达式)

{

执行代码块

}

:if后面没有分号;直接加{}

if-else语句的三种形式:

1)if(表达式)  语句1                 (没有else子句成分)

2)if(表达式)                               (有else子句成分)

      语句1

else

   语句2

3)if(表达式1)      语句1         (在else部分又嵌套多层的if语句)

    else if(表达式2)   语句2

   else if(表达式3)   语句3

语义是依次判断表达式的值,当出现某个值为真时,则执行对应代码块

:当某个条件为真时,则不会向下执行该分支结构的其他语句

 输出结果:

 

2.2用while和do...while语句实现

do...while实现一般形式

do

语句

while(表达式)
例:

int i=1 ;                                           //设变量i的初始值为1

do                                                   //循环结构开始

{
printf("%d",i+1) ;                        //循环体,输出i的量,然后使i加1

while(i<100);                               //当i小于或等于100时,继续执行循环体

注:while语句一般表现形式是关系表达式或逻辑表达式,当表达式的结果为假时结束循环

在循环体中改变循环变量值,否之一直执行(进入死循环)(只要当循环条件为真:给定的条件成立,就执行循环体语句)

循环体中包括一个以上的语句,则必须用{}括起来,组成复合语句

do...while语句先执行循环中的执行代码块,然后判断while语句中表达式是否为真。如果为真继续循环;如果为假,终止循环,do...while 一定要执行一次循环语句

例:while循环

输出结果

 例二:do...while实现形式

 输出形式:

2.3for语句实现

(1)for语句一般形式:

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

{

执行代码块

}

注:1.执行表达式1,对循环变量做初始化

2.判断表达式2,若其值为真(非0),则执行for循环体中执行代码块,然后向下执行,如果其值为假(0),则中止循环

3.执行表达式3,(i++)对于循环变量进行操作语句

4.执行for循环中的循环代码,第一步初始化执行一步

5.循环结束,程序继续向下执行

语句可改写while的循环形式:

表达式1;

while表达式2

{

语句

表达式3

}

(2)"表达式1”可以省略,即不设置初值,但表达式1后的分号不能省略,例:

for(;i<=100;i++)sum=sum+i;

(3)表达式2可以省略,即不用表达式2作为循环条件表达式,不设置和检查循环的条件。

for(i=1;;i++)sum=sum+i;

(4)表达式3可以省略

for(i=1;i<=100;)

{
sum=sum+i;

i++;

}

注:1表达式1是一个或多个赋值语句,用来控制变量的初始值

2.表达式2是关系表达式,其决定什么时候退出循环

3.表达式3是循环变量的步进值,定义控制循环变量每一次循环循环后按什么方式来循环

4.循环结束,程序继续向下执行

例:for语句

 2.4用switch语句实现多分支选择结构

switch一般形式:

switch(表达式)

{

case 常量1:语句1;

case常量2:语句2;

...........

case常量n:语句n;1

default:    语句n+1

}

注:1.在case后的的各常量表达式不能相同,否则出现错误

2.在case子句后如果没有break;会一直往后执行,直到遇见break,才会跳出switch语句

3.switch后面的表达式只能是整型或字符类型

4.在case后允许多个语句,可以不用{}括起来

5.各case和default子句的先后顺序可以变动,不会影响程序结果

6.default子句可以不用省略

 输出函数:

2.5结束语句

一:break语句

1.在没有循环结构的情况下,break不能用在单独的if-else语句

2.在多层循环中,一个break语句只挑出当前循环(break是跳出当前整个循环

二:continue语句

continue语句是结束本次循环,开始执行下一次循环

2.6循环语句之多重循环

多重循环在循环结构的循环中又出现循环结构,一般最多三层循环结构

 三.用函数实现模块化程序设计

 3.1定义函数的方法

1.定义无参函数

类型名 函数名()

{

函数体

}

类型名 函数名(void)

{

函数体

}

2.定义有参函数

类型名 函数名(形式参数表列)

{

函数体

}

3.定义空函数

类型名 函数名()

{}

有参函数更为灵活,输出内容随n的改变而改变,只要在main函数中传递一个参数即可

无参函数的输出相对稳定,需要改动时还需要到自定义的方法内改变循环变量的值

3.2调用函数

1.函数调用的形式

函数调用一般形式:函数名([实参表列])

注:1.对无参函数的调用,可以将[]包含的省略

2.[]可以是常数,变量或构造其他数据及表达式,多个参数之间用逗号,分开

2.形参与实参

实际参数:在主调函数中调用一个函数,函数名后面括号中的参数,实参可以是常量,变量,表达式

形式参数:在定义函数时后面括号中的变量,调用该函数传入时的参数。

形参只有在被调用时才分配内存单元,在调用结束后,即刻释放所分配的内存单元,形参只有在函数内部有效

例:

 输出函数:

 3.函数的返回值

(1)函数返回值一般是通过函数中的return语句实现的,函数返回一般形式:return(表达式)或return 表达式。

(2)函数类型,函数有返回值,这个值属于某种类型,应当在定义函数时指定函数值的类型

例:

(3)在定义函数时指定的函数类型一般和return语句的表达式类型一致

输出:

3.3对被调用函数的声明和函数原型 

 1.函数声明的形式:

(1)函数类型 函数名(参数类型1 参数名1,参数类型2 参数名2,参数类型3 参数名3,...参数类型n 参数名n)

(2)函数类型 函数名(参数类型1,参数类型2,....参数类型n)

2.在一个函数中调用另一个函数需要的条件:

(1)被调用函数为已经定义的函数

(2)如果使用库函数,在文本开头#include指令调用有关库函数所需要的信息包含到文本中来:

#include<stdio.h>

(3)如果使用用户自己定义的函数,而该函数的位置在调用的函数后面,应该在主调函数中对被调用的函数作声明。

例:输入两个实数,用一个函数求出他们的和

 输出结果

3.函数定义和声明的区别 

函数定义:指对函数功能确立,包括指定函数名,函数值类型,形参及其类型以及函数体,是一个完整独立的函数单位。

函数声明:把函数名字,函数类型以及形参的类型,个数和顺序通知编译下来,以便在函数调用时进行对照检查。

3.4函数的递归调用

1.函数递归调用含义:在调用一个函数过程中直接或间接地调用该函数本身

执行递归函数强调其自身,每调用一次就进入新的一层

例;用递归方法求n!

公式表示:n!=n!(n=0,1)

                 n!=n(n-1)!   (n>1)

 输出结果:

2.递归函数的特点

(1)每一级函数调用时都有自己的变量,但是函数代码不会得到复制

(2)每次调用都有一次返回

(3)递归函数中,位于递归调用前的语句和各级被调用函数具有相同的执行顺序

(4)递归函数中,位于递归调用后的语句的执行顺序和各个被调用函数的顺序相反

(5)递归函数中一定有中止语句

3.5数组作为函数参数

1.一维数组名作函数参数

数组元素,数组名可以做函数参数(注:用数组元素作实参时,向形参变量传递的是数组元素的值。数组名作函数实参时,向形参传递的是数组元素的地址。

例:计算5人成绩的平均分

 输出函数:

 2.多维数组名作函数参数

可以用多维数组名作为函数的实参和形参,在被调用函数中对形参数组定义时可以指定每一维的大小。

多维数组格式:数组类型 数组名称[常量表达式1][常量表达式2]...[常量表达式n],例:

int array[4][6];

注:

多维数组的初始化与一维数组的初始化两种情况:

1.数据类型 数组名称[常量表达式1][常量表达式2]…[常量表达式n] = {{值1,…,值n},{值1,…,值n},…,{值1,…,值n}};
2.数据类型 数组名称[常量表达式1][常量表达式2]…[常量表达式n]; 数组名称[下标1][下标2]…[下标n] = 值;

多维数组初始化要注意以下事项:

1.采用第一种始化时数组声明必须指定列的维数。mtianyan: 因为系统会根据数组中元素的总个数来分配空间,当知道元素总个数以及列的维数后,会直接计算出行的维数;
2.采用第二种初始化时数组声明必须同时指定行和列的维数。二维数组定义的时候,可以不指定行的数量,但是必须指定列的数量

例:有一个4*5的矩阵,求所有元素中最大值

 3.6局部变量和全局变量

定义变量的情况:

(1)在函数开头定义

(2)在函数内的复合语句内定义

(3)在函数外部定义

局部变量:也称为内部变量,局部变量在函数内作定义说明,其作用局限于函数内,在复合语句中也可以定义变量,其作用在复合语句的范围内

全局变量:也称为外部变量,它是在函数外部定义的变量,不属于哪一个函数,属于源程序文件。

局部变量:

变量的范围和作用:

注:a主函数中定义变量只在主函数中有效

b不同函数中可以使用同名的变量,他们代表不同的对象,互不干扰

c形式参数也是局部变量

 全局变量

全局变量程序段:

 3.7变量的存储方式和生存期

1.动态存储方式和静态存储方式

动态存储:

存储数据:1.)函数形式参数。在调用时给形参分配储存空间

2.)函数定义的没有用关键字static声明变量,即自动变量

3)函数调用时的现场保护和返回地址

函数调用开始时分配储存空间,函数结束时释放空间。动态存储区中存放的变量是根据程序运行的需要而建立和释放的,通常包括:函数形式参数;自动变量;函数调用时的现场保护和返回地址等。

静态储存:在程序运行期间分配固定的存储空间的方式。静态存储区中存放了在整个程序执行过程中都存在的变量,如全局变量。

2.局部变量储存类别:

1.自动变量(auto变量)

在调用函数时,系统会给这些变量分配储存空间,在函数调用结束时会自动释放这些储存空间,例:

s

 2.静态局部变量(static局部变量)

用static修饰的为静态变量,如果定义在函数内部的,称之为静态局部变量;如果定义在函数外部,称之为静态外部变量。例:

输出结果:

  

3.寄存器变量(register变量)

register int f;  //定义f为寄存器变量

  • 14
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值