C语言编程基础
程序创建
源程序的命名要以 .c 结尾
一般使用gcc编译器进行编译
注释:1. // 单行注释 2. /* */ 多行注释 (注释十分重要,不可省略,应当表述清楚明白)
#include<stdio.h>
“#” 代表预处理指令的开始
include 代表包含
stdio.h 代表标准输入输出库(是系统环境中
提供的编写好的一部分函数)
< > 表示引用系统环境当中提供的库文件
函数的基础格式: 返回值 函数名 (函数的参数列表)
-
int main(int argc,const char *argc[])
-
int 代表main 函数的返回值为int类型
-
main main函数是固定的C语言程序(C-like)的入口有且仅有一个
-
int argc,const char *argc[] 是main函数的参数
-
printf 为标准输入输出库中的函数,用于标准输出
三大结构
顺序结构:
通过运算符的结合性,代码从上往下执行来保证
选择结构:
通过分支语句保证条件满足和不满足,来进行控制
- if-else,switch-case
循环结构:
通过循环语句保证条件满足和不满足,循环进行
- for,while,do-while
C语言变量相关说明
标识符
- 给程序中的实体(变量、函数、数组、结构体及文件)起的名字
- 用户标识符: 符号变量名 变量名 用户函数名等
系统标识符: 关键字(int、static、if…) 系统函数名 预编译指令
变量
-
命名方式:
1.只能由字母、数字、下划线三种字符组成
2.第一个字符必须是字母或下划线
3.C语言中大写字母与小写字母不同
4.标识符的命名应当做到见名知义 -
变量类型
- 基本类型:
整型—短整型(short)
长整型(long)整型(int)
字符型(char) ‘0’-48 ‘A’-65 ‘a’-97
浮点型(实型)—单精度型(float)双精度型(double)
枚举类型(enum) - 构造类型:数组类型
结构体类型(struct)
共用体类型(union) - 指针类型
- 空类型(void)
- 基本类型:
-
格式化输出
- 格式字符要用小写
格式字符与输出项个数相同,按先后顺序一一对应
输出转换:格式字符与输出项目类型不一致,自动按指定格式输出 - %d 输出十进制整数 , %x 十六进制无符号整数 , %o 八进制无符号整数
%u 不带符号的十进制整数 , %c 单一字符 , %s 字符串
%e 指数形式浮点小数 , %f 小数形式浮点小数 , %g e和f 中较短的一种
%% 百分号本身
- 格式字符要用小写
-
存储位置
BSS段:通常是指用来存放程序中未初始化和零值的全局变量
代码段(text):通常是指用来存放 程序执行代码
数据段(data):通常是指用来存放程序中 已初始化的非零 的 全局变量
堆(heap):用于存放进程运行中被动态分配的内存段
栈(stack):存放程序的 局部变量 (但不包括static声明的变量, static 意味着 在数据段中 存放变量)
变量的作用域和生命周期
变量的作用域:
和编译阶段有关,如果超出作用域会导致编译错误
- 基于全文件的作用域,称为全局变量,会用到多文件编译
- 基于本文件的作用域,一般称为静态全局变量,之和这个文件有关,其他 文件无法使用
- 函数内的局部变量,只能够在本函数使用
- 基于域的的局部变量,只能够在域中使用
变量的生命周期:
与运行阶段有关,如果超出生命周期会导致运行错误
函数设计
函数
- 声明:对于一个函数最基本特征的说明,一般写在函数开头或头文件中
- 调用:函数的调用就是函数的使用方式
- 实现:需要完整带有函数主体内容
模块化:
将一个大程序按功能分割成小模块
- 特点:
1.各模块相互独立、功能专一、结构清晰、接口简单
2.控制了程序设计的复杂性
3.提高元件的可靠性
4.缩短开发周期
5.避免程序开发的重复劳动
6.易于维护和修理 - 开发方法:自上而下,逐步分解,分而治之
运算符与表达式
运算符(完成变量或表达式运算的符号)
- 运算符一般用于多个数值(变量、常量、表达式的值)的处理
- 表达式 可由 运算符+操作数+表达式 构成
- 语句 一句话以 ; 或者 {} 结束
左值与右值
- 左值:指能够在“=”左边存在的值,也就代表着它可以被赋值
- 右值:指能够在“=”右边的值,它可以进行取值操作
编译过程
编译期 链接期 运行期
编译源文件 —> 目标程序 —> 可执行程序 —> 结果
.c文件 .o文件 a.out文件
-
编译期:
- 预处理:将源文件当中的预处理指令替换为对应的内容
命令 gcc -E 源文件名 - 编译:将处理后的文件转换成对应的汇编文件,此时会生成一个源文件名加后缀.s的文件
命令 gcc -S 源文件名/前一步生成的预处理文件文件名 - 汇编:将汇编文件转换为目标文件(二进制代码文件)此时会生成一个后缀为.o文件
- 预处理:将源文件当中的预处理指令替换为对应的内容
-
命令 gcc -c 源文件名/前一步生成的汇编文件文件名
-
编译期出错 :一般为C语言语法性的错误
-
链接期
- 将前一步生成的目标文件和系统的库文件合并成为可执行文件
- 链接期出错 :一般为找不到调用的错误
-
运行期
- 运行期出错 :会导致程序崩溃的错误一般是由于不符合系统处理的错误,以及数据性的错误
-
https://blog.csdn.net/weixin_44708229/article/details/108321122