C语言基础知识

C语言

1、数据类型

char 字符数据类型

short 短整型

int 整形型

long 长整型

long long 更长的整型

float 单精度浮点数

double 双精度浮点数

2、常量、变量

1、变量分为局部变量和全局变量

2、当全局变量和局部变量名字相同的情况下,局部优先

3、变量的作用域和生命周期

作用域

作用域(scope)是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的

而限定这个名字的可用性的代码范围就是这个名字的作用域

1、局部变量的作用域是变量所在的局部范围

2、全局变量的作用域是整个工程

生命周期

变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段

1、局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束

2、全局变量的生命周期是:整个程序的生命周期

(声明来自外部的符号:extern int a;)

常量

C语言中的常量分为以下几种:

· 字面常量

· const 修饰的常变量,在C语言中,const 修饰的 a,本质是变量,但是又不能被直接修改,有常量的属性。

· #define 定义的标识符常量

· 枚举常量

3.字符串+转义字符+注释

3.1 字符串

这种由双引号(Double Quote)引起来的一串字符称为字符串字面值(String Literal),或者简称字符串。

注:字符串的结束标志是一个 \0 的转义字符。在计算字符串长度的时候 \0 是结束标志,不算作字符串内容。

3.2 转义字符及释义

\? 在书写连续多个问号时使用,防止他们被解析成三字母词

\'用于表示字符常量 '

\"用于表示一个字符串内部的双引号

\\用于表示一个反斜杠,防止它被解释为一个转义序列符

\a警告字符,蜂鸣

\b退格符

\f进纸符

\n换行

\r回车

\t水平制表符

\v垂直制表符

\ddd表示1~3个八进制的数字

\xdd表示2个十六进制数字

3.3 注释

1、代码中有不需要的可以删除,或注释掉

2、难懂的代码要加注释

4.操作符

算术操作符:+  -  *  /  %

移位操作符:>>  <<

位操作符:&  ^  |

赋值操作符:=  +=  -=  *=  /=  &=  ^=  |=  >>=  <<=

单目操作符:

!逻辑反操作

-负值

+正值

&取地址

sizeof操作数的类型长度(以字节为单位)

~对一个数的二进制按位取反

--   前置--、后置--

++   前置++、后置++

*间接访问操作符(解引用操作符)

(类型) 强制类型转换

关系操作符:

> 大于

>= 大于等于

< 小于

<= 小于等于

!= 用于测试“不相等”

== 用于测试“相等”

逻辑操作符:

&& 逻辑与

|| 逻辑或

条件操作符(三目操作符):exp1 ? exp2 : exp3

表达式1为真,算表达式2,不算表达式3,表达式2结果即为整个结果。

表达式1为假,算3不算2,3即为结果。

逗号表达式:从左到右依次计算,整个表达式的结果是最后一个表达式的结果。

下标引用、函数调用和结构成员:[ ]  ( )  .  ->

5.常见关键字

auto:用于声明自动变量
break:用于跳出当前循环(for、while、do-while)或 switch 语句,执行跳出后的下一条语句
case:与 switch 配合使用,当 switch 表达式的值与 case 后的值匹配时,执行该 case 下的语句
char:用于声明字符型变量或指针,占用 1 个字节
const:用于声明常量,表示该变量的值在初始化后不能被修改,是只读的
continue:用于循环语句中,跳过本次循环中 continue 后面的语句,直接进入下一次循环
default:与 switch 配合使用,当switch表达式的值与所有case都不匹配时执行
do:与 while 组成 do-while 循环,先执行循环体一次,再判断循环条件,至少执行一次循环体
double:用于声明双精度浮点型变量
else:与 if 配合使用,可构成 if-else、if-else if-else 等分支结构
enum:用于定义枚举类型
extern:用于声明外部变量或函数
float:用于声明单精度浮点型变量
for:用于构成 for 循环,是一种常用的循环控制语句,可指定循环的初始条件、循环条件和循环后操作
goto:用于无条件跳转到函数内的某个标号处
if:用于构成条件判断语句,当 if 后的条件成立时,执行其后的语句,可单独使用或与 else 配合使用
int:用于声明整型变量,通常占用 4 个字节
long:用于修饰整型变量,声明长整型变量
register:用于声明寄存器变量
return:用于函数中,结束函数的执行
short:用于修饰整型变量,声明短整型变量
signed:用于修饰整型变量,表示该变量是有符号的
sizeof:用于计算变量或数据类型所占用的字节数
static:静态修饰
struct:用于定义结构体类型
switch:用于构成多分支选择语句,根据 switch 后表达式的值,跳转到对应的 case 分支执行,常与 case、default 配合使用
typedef:用于为已有的数据类型定义一个新的别名
union:用于定义共用体类型
unsigned:用于修饰整型变量,表示该变量是无符号的,只能表示非负数
void:表示 “无类型”
volatile:用于声明易变变量
while:用于构成 while 循环,先判断循环条件,当条件成立时,执行循环体,否则跳出循环

5.1关键字static

在C语言中:static 是用来修饰变量和函数的。

修饰局部变量—称为静态局部变量

修饰全局变量—称为静态全局变量

修饰函数—称为静态函数

static修饰局部变量的时候,局部变量出了作用域,不会销毁。本质上,static 修饰局部变量的时候,改变了变量的存储位置的,影响了变量的生命周期,生命周期变长,和程序的生命周期一样。

全局变量是具有外部链接属性的,static 修饰全局变量的时候,这个全局变量的外部链接属性就变成了内部链接属性,其他源文件就不能再使用到这个全局变量了。

函数是具有外部链接属性,一个函数本来是具有外部链接属性的,但是被 static 修饰的时候,外部链接属性就变成了内部链接属性,其他源文件就无法使用了。

6.指针

6.1 内存:内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的。所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节。为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址。

6.2 指针变量的大小:指针大小在32位平台是4个字节,在64位平台是8个字节。

7.结构体

7.1 结构体指针变量 -> 成员名 例:ps -> name.

结构体对象.成员名 例:(*ps).name.

7.2 在结构体传参的时候,最好传地址。

原因:函数传参的时候,参数是需要压栈的。

如果传递一个结构体对象的时候,结构体过大,参数压栈的系统开销比较大,所以会导致性能的下降。

总结:结构体传参的时候,要传结构体的地址。

打印格式说明符:

整型:%d 十进制有符号整数

%u 十进制无符号整数

%ld 十进制有符号长整型

%lu 十进制无符号长整型

%hd 短整型

%hu 无符号短整型

浮点型:%f 十进制浮点数(默认保留6位小数)

%lf 双精度浮点数

%e 科学计数法形式

%g 根据数值大小自动选择%f或%e格式

字符型:%c 单个字符

%s 字符串

指针类型:%p 十六进制指针的值

其他:%x 十六进制无符号整数

%o 八进制无符号整数

%5d 输出的整数占5个字符宽度

%.2f 输出的浮点数保留2位小数

%zu 输入或输出size - t类型的(也是sizeof专用的)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值