任务2-了解C语言

C程序结构

C程序基本结构:

#include<文件名>

类型标识符 main( )

{

   函数体

}

一、编译预处理

编译预处理是指在编译前对源程序进行的一些预加工。预处理是指在进行编译的第一遍扫描之前所做的工作。预处理是C语言的一个重要功能,它由编译系统中的预处理程序按源程序中的预处理命令执行。

C语言的预处理命令均以“#”开头,末尾不加分号,以区别于C语言。

C语言提供了多种预处理功能,如宏定义、文件包含、条件编译等。合理地使用预处理功能能使编写的程序便于阅读、修改、移植和调试,也有利于模块化程序设计。

常用的几种预处理功能:

1.宏定义

在C语言源程序中,允许使用一个标识符表示一个字符串,称为宏。被定义为宏的标识符称为宏名。在编译预处理时,对于程序中的所有宏名,都用宏定义中的字符串替换,称为宏替换或宏展开。

宏定义是由源程序中的宏定义命令完成的,宏替换是由预处理程序自动完成的。在C语言中,宏分为无参数和有参数两种

  • 无参宏定义

无参宏定义的宏名后没有参数,其定义的一般形式为

#define 标识符 字符串

作用:用一个指定的标识符代表一个字符串。

  • 有参宏定义

宏定义中的参数称为形式参数,宏调用中的参数称为实际参数。对于带有参数的宏,在调用中不仅要宏展开,而且要用实参代替形参。

其一般形式为:

#define 宏名(形参表) 字符串

  • 有参宏调用一般形式

宏名(实参表)

2.文件包含

文件包含是指一个文件可以将另一个文件的全部内容包含进来。C语言使用#include命令行实现文件包含功能,命令格式为

#include文件名

#include<文件名>

  • #include的两种用法

一种为:#include<stdio.h>

另一种为:#include”stdio.h”

使用尖括号< >和使用双引号” ”的区别在于头文件的搜索路径不同

Ø使用尖括号< >,编译器会到系统路径下查找头文件;

Ø而使用双引号“ ”,编译器首先在当前目录下查找头文件,如果没有找到,再到系统路径下查找。

  •  #include用法的注意事项

Ø一个#include命令只能包含一个头文件,多个头文件需要多个#include命令。

Ø同一个头文件可以被多次引入,多次引入的效果和一次引入的效果相同,因为头文件在代码层面有防止重复引入的机制。

Ø文件包含允许嵌套,也就是说在一个被包含的文件中又可以包含另一个文件。

二、函数

C语言有一个或多个程序文件构成,每个文件由一个或多个函数构成,通过函数之间的相互调用完成工作。一个C程序中必须有且仅有一个主函数(main函数),C程序从主函数开始执行,在主函数结束。

每个C语言编译系统都提供了标准库函数,程序设计中的许多常用功能都可以在标准库函数中找到。标准库函数的功能通过一批头文件描述,当在程序中使用莫类函数时,需要将其所在的头文件用#include命令包含到本程序文件中。

标准库函数的数量有限,不可能满足每个用户的特定需求,因此,C语言允许用户定义自己的函数,称为用户自定义函数

标准函数和用户自定义函数都可分为有参函数和无参函数两类。

函数一经定义,就和系统提供的标准函数的用法一致。

1.函数的定义

  • 无参函数的定义一般形式为:

类型标识符  函数名()

{

   函数体

}

  • 有参函数的定义一般形式为:

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

{

   函数体

}

2.函数的组成部分

返回类型:一个函数可以返回一个值。

函数名称:这是函数的实际名称。函数名和参数列表一起构成了函数签名。

参数:参数就像是占位符。当函数被调用时,您向函数传递一个值,这个值被称为实际参数。参数列表包括函数参数的类型、顺序、数量。参数是可选的,也就是说,函数可能不包含参数。

函数主体:函数主体包含一组定义函数执行任务的语句。

3.函数的调用

除了主函数之外,程序中的其他函数只有在被调用时才会被执行。调用其他函数的函数称为主调函数,被其他函数调用的函数称为被调函数

函数调用的一般形式为:

函数名(实参表列)

调用无参函数时,函数名后面跟一对空的括号,即函数调用时括号不能省略;当实参有多个时,中间用逗号分隔。

  • 实参

调用函数时,函数名后面的括号内的表达式称为实际参数(简称实参);

  • 形参

定义函数时,函数名后面的括号内的变量名称称为形式参数(简称形参)。

形式参数就像函数内的其他局部变量,在进入函数时被创建,退出函数时被销毁。

  • 调用函数的两种方式

传值调用:

该方法把参数的实际值复制给函数的形式参数。在这种情况下,修改函数内的形式参数不会影响实际参数。

引用调用:

通过指针传递方式,形参为指向实参地址的指针,当对形参的指向操作时,就相当于对实参本身进行的操作。

默认情况下,C使用传值调用来传递参数。一般来说,这意味着函数内的代码不能改变用于调用函数的实际参数。

4.return语句

return语句的作用是将流程返回至调用处。

  • 如果函数是纯粹计算函数,则由return语句返回一个计算结果,这个结果由return后面的表达式给出,表达式可以用括号括起来,也可以不括起来。
  • 对于完成一个具体工作的函数,可以返回完成结果,如printf函数执行成功后会返回显示的字节数,执行失败时会返回一个负整数。
  • 对于无返回值的函数,return语句的后面不带表达式,此时不返回任何值,仅将流程转回主调函数。如果不带表达式的return语句位于函数的最后,则可以省略return语句,这时,当执行到表达函数结束的右花括号时,流程会返回到主调函数。

一个函数中可以有多个return语句,不管执行到哪个return语句,流程都会返回到主调函数;一个函数中有多个return语句并不代表这个函数可以同时求出多个值,函数的返回值只能有一个,要想从函数的调用中得到多个变化的值,需要另想办法。

C语言的基本语法

1.注释

使用//进行单行注释,使用/* */进行多行注释。注释的内容编译器是忽略的,注释的主要作用是在代码中加一些说明和解释,这样有利于代码的阅读。

2.关键字

关键字是由C语言规定的具有特定意义的字符串,通常也称为保留字,C语言的关键字共有32个,根据关键字的作用,可分其为数据类型关键字、控制语句关键字、存储类型关键字和其它关键字四类。

  • 数据类型关键字

    void:声明函数无返回值或无参数,声明无类型指针,显示丢弃运算结果

    char:字符型类型数据,属于整型数据的一种

    int:整型数据,通常为编译器指定的机器字长

    float:单精度浮点型数据,属于浮点数据的一种

    double:双精度浮点型数据,属于浮点数据的一种

    short:短整型数据,属于整型数据的一种

    long:长整型数据,属于整型数据的一种

    signed:有符号数据类型

    unsigned:无符号数据类型

    enum:声明枚举类型

    struct:声明结构体变量

    union:声明共用体数据类型

  • 控制语句关键字

    for:for循环语句关键字

    do:do循环结构

    while:while循环结构

    break:跳出当前循环

    continue:结束当前循环,开始下一轮循环

    if:条件语句关键字

    else:条件语句否定分支

    goto:无条件跳转语句(条件语句关键字)

    switch:用于开关语句

    case:开关语句分支

    default:开关语句中的“其他”分支

    return:子程序返回语句

  • 存储类型关键字

    auto:声明自动变量,由编译器自动分配及释放。通常在栈上分配

    extern:指定对应变量为外部变量,即在另外的目标文件中定义,可以认为是约定由另外文件声明对象的一个“引用”

    register:指定为寄存器变量,建议编译器将变量存储到寄存器中使用,也可以修饰函数形参,建议编译器通过寄存器而不是堆栈传递参数

    static:指定为静态变量,分配在静态变量区,修饰函数时,指定函数作用域为文件内部

  • 其他关键字

    const:声明常类型,常类型的变量或对象的值是不能被更新的,可使用在常量定义,指针定义,函数定义等处,与volatile合称“cv特性”,指定变量不可被当前线程/进程改变(但有可能被系统或其他线程/进程改变)

    sizeof:用于计算特定类型或特定类型变量的数据类型长度

    typedef:常规变量类型定义,数据类型取别名,指针类型定义,函数地址说明,函数声明,函数指针定义等

    volatile:说明变量在程序执行中可被隐含地改变,与const合称“cv特性“,指定变量的值有可能会被系统或其他进程/线程改变,强制编译器每次从内存中取得该变量的值

 3.标识符

标识符是用来标识变量、函数、或任何其他用户自定义项目的名称。一个标识符以字母A-Z或a-z或下划线_开始,后跟零个或多个字母、下划线和数字(0-9)。

  • 第一个字符必须为字母或下划线。
  • C标识符内不允许出现标点字符,比如@、%。
  • C是区分大小写的编程语言。因此,在C中,Name和name是两个不同的标识符。
  • 关键字不能作为常量名、变量名或其他标识符名称。
  • 只能由字母、下划线和数字组成。

4.分号

在C程序中,分号是语句结束符。也就是说,每个语句必须以分号结束。它表明一个逻辑实体的结束。

5.空格

只包含空格的行,被称为空白行,可能带有注释,C编译器会完全忽略它。

在C中,空格用于表述空白符、制表符、换行符和注释。空格分隔语句的各个部分,让编译器能识别语句中的某个元素(比如int)在哪结束,下一个元素在哪里开始。

6.变量声明

在使用变量之前,需要先声明变量的类型和名称。

7.运算符

C语言支持常见的算术运算符(+、-、*、/、%)、赋值运算符(=)、比较运算符(<、>、==、!=等)、逻辑运算符(&&、||、!)等。

C语言数据类型

在C语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统。变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式

C中的类型(函数返回值的类型)可以分为以下几种:

数组类型和结构类型统称为聚合类型。

基本类型:

(各种类型的存储大小与系统位数有关)

1.整数类型

2.浮点数类型

3.void类型

用于函数无返回值或无参数,指针指向void。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值