C语言学习1

文章目录
  1. 1. C语言概述
    1. 1.1. 构成
    2. 1.2. 常量、变量和数据类型
      1. 1.2.1. 标识符分类
      2. 1.2.2. 常量
      3. 1.2.3. 进制
      4. 1.2.4. 形式
      5. 1.2.5. 变量
      6. 1.2.6. 类型的自动转换和强制转换

C语言概述

本文将描述C语言的基本构成及其特点。

构成

①源程序由函数构成,每个函数完成相对独立的功能。
②每个源程序中必须有且只能有一个主函数,可以放在任何位置,但程序总是从主函数开始执行。
③函数体:在函数后面用一对花括号括起来的部分。
④每个语句以分号结束,但预处理命令、函数头之后不能加分号。
⑤注释:括在“ /* “ 与 “ */ ” 之间,没有空格,允许出现在程序的任意位置。
⑥预处理命令:以 # 开头的语句。

●自定义函数
库(Library)是指函数的集合,在磁盘中往往为一个文件夹。库函数(Library Function)指函数为C语言自带的集合,默认自带的有标准库,其他公司或个人开发的称为第三方库。

●主函数
一个程序必须有且只有一个main函数,它是程序的入口函数,程序从main函数开始,直到main函数结束。(当程序执行到return或函数末尾时,函数才结束)

●头文件
常用函数或库函数保存的文件,每个头文件包含若干类似功能的函数,调用头文件内函数时需引用,引用头文件有#include 命令。(早期C包含15个头文件[标准库] 如stdio.h stdlib.h)

从源代码生成可执行文件可分为四步:预处理(Preprocessing)、编译(Compilation)、汇编(Assembly)、链接(Linking)
用GCC编译流程如下图:
[Linux下]
Linux下GCC编译过程
[Windows下]
Windows下GCC编译过程

●预处理
主要处理源文件与头文件中以#开头的命令,如 #include #define #ifdef 等
一般规则如下:
①将所有的#define删除,展开所有宏定义
②处理所有条件编译命令,如#if #ifdef #elif #else #end 等
③将#include 所包含文件的内容插入当前位置,可递归
④删除所有注释 // /* */
⑤添加行号和文件名标识,便于调试时给出具体代码的位置
⑥保留所有#program 命令,因为编译器需要使用

●编译
将预处理完成的文件进行词法分析、语法分析、语义分析、优化分成相应的汇编代码文件。

●汇编
将汇编代码转化为可执行的机器指令

●链接
将引用的外部函数与变量的地址找到,将所有目标文件组织成一个可执行二进制文件。

C程序生成:一般先由源文件经编译生成目标文件,后经链接生成可执行文件。

常量、变量和数据类型

标识符:只能由字母、数字或下划线组成,第一个字符不能是数字、区分字母大小写。

标识符分类

关键字:C语言规定的专用标识符,有固定含义。
预定义标识符:和“关键字”一样有特定含义
用户标识符:由用户需要定义的标识符。(见名知义,不可与关键字相同)

常量

在程序运行中,其值不能被改变的量(整形常量、实型常量、字符常量、字符串常量、符号常量)

进制

进制位 表示范围
十进制 基本数字范围0~9
八进制 以0开头,基本数字范围0~7
十六进制 以0x开头,基本数字范围0~F (0~9,A~F)

形式

类别 表示形式
小数形式 以小数点分隔左右两边为十进制数
指数形式 e前必须有数字,e后必须为整数

用单引号括起来如’A’表示ASCII码字符集里的字符,即字符常量
用双引号括起来如“Hello”表示字符串

转义字符(特殊字符常量)以“\”打头,代表不同意思

字符 意义
\n 换行
\ 反斜杠\
\ddd 1~3位八进制数 代表一个ASCII字符 最大\177
\xhh 1~2位十六进制数 代表一个ASCII字符 最大\7f

符号常量 由预处理“#define”定义的常量,可用标识符表示的一个常量。

变量

值可以改变的量(整型变量、实型变量、字符变量) 使用前必须先定义变量名

说明 字符型 短整型 整型 长整型 单精度浮点型 双精度浮点型 无类型
类型 char short int long float double void
32位环境下长度 1 2 4 4 4 8

强类型语言:一旦确定类型,就不能赋值到其他类型,除非转换数据类型,C语言属于强类型语言
弱类型语言:定义时不必指明数据类型,系统会自动推演类型

类型的自动转换和强制转换

自动转换规则(编译器自动进行的数据类型转换):
①按长度增加方向进行,以保证数值不失真,或精度不降低
②所有浮点运算以双精度进行,只有float也要转换为double才能运算
③char、short参与运算先转换为int
类型自动转换规则

强制转换规则(程序员在代码中明确转换):
表达格式
(type_name)expression
(类型)(表达式)
用于防止数据失真,如两整数相除结果为小数时,需将两除数强制转换为小数以使得结果为小数。


版权声明

Scholar’s Blog by scholargeek is licensed under a Creative Commons BY-NC-ND 4.0 International License.
董仕麟创作并维护的scholargeek博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证

本文首发于Scholar’s Blog博客,版权所有,侵权必究。

本文永久链接:https://scholargeek.github.io/2018/02/03/C%E8%AF%AD%E8%A8%80%E5%AD%A6%E4%B9%A01/

更新日期:


本站总访问量