C语言与我的不解之缘(一)
C语言是一门编程型语言,是我们与计算机进行沟通的语言,C语言的知识还是比较多的,难免会忘记。我就整理了一下。如果有不对的地方,还望大佬抽空指点一下。
main函数作为程序的入口,有且仅有一个
C语言中的关键字
auto, break, case, char, const, continue, default, do, double, else, enum,extern, float, for, goto, if, int, long, register, return, short, signed, sizeof,static, struct, switch, typedef, union, unsigned, void, volatile, while, inline, restrict, _Bool, _Complex, _Imaginary
另外 inline, restrict, _Bool, _Complex, _Imaginary
等关键字,是在C99标准中加⼊的
C语言中的内置数据类型有
字符型: char 所占存储空间大小 1 个字节
短整型: short 所占存储空间大小 2 个字节
整型: int 所占存储空间大小 4 个字节
长整型: long 所占存储空间大小 4/8 个字节, long 所占空间大小只要大于等于 int 所占空间大小即可
长长整型: long long 所占存储空间大小 8 个字节
单精度浮点型: float 所占存储空间大小 4 个字节
双精度型: double 所占存储空间大小 8 个字节
注意:所有小数均默认为是 double
类型的数据,如果要赋给 float
类型的变量,要在后面加 f
,不然会出现警告
例如:float a = 3.14f;
布尔类型: bool 所占存储空间大小 1 个字节,bool 类型的变量只有2种值,即 true(1) 和 false(0) ,创建布尔类型变量需要调用 头文件stdbool.h
可以 sizeof()
函数得到数据类型所占空间的大小
注意:size_t
是 sizeof
返回值的类型别名,sizeof()
函数的返回类型是无符号整型 ,用整型的话可能会有警告
例如: printf("%zd 个字节",sizeof(int))
就会输出 4 个字节
可以在 limits.h
和 float.h
中查看数据类型的范围
C语言中的自定义数据类型有
数组 enum(枚举) struct (结构体) union (联合体/共用体)
C语言中其他关键字的作用
typedef :类型重命名
extern :声明外部符号
register :建议存储到寄存器
static :静态变量(将变量的作用域限制在它所占的源文件里)
return :函数返回值
volatile :防止代码被编译器优化,出现问题
例如:int flag = 1; while(flag);
编译器可能会将 flag 给存到了寄存器,寄存器上的值没有地址代码可能就变成了 while(1);
,而 flag 变化与否都不影响该循环
void :类型重命名
###C语言中的字符与字符串
在单引号内的均为字符,单引号内有且仅能放一个字符
在双引号内的均为字符串,注释如果放在双引号里,那么注释并不会发挥作用,而是会作为字符串,字符串的结束标志为'\0'
,不是 字符'0'
,2个的ASCll值并不一样
例如:"a/*bc/*d\\ef"
strlen&sizeof
函数的用法
strlen
函数是用来测量字符串的长度,结束标志也为 '\0'
,遇到 '\0'
就停止检测
只能测量字符串的长度
例如:printf("%zd\n", strlen("abcdef"));
输出 6
sizeof
函数是用来计算操作符数的类型长度,参数是变量时括号可以去掉
例如: sizeof(int);
, int a = 0; sizeof a
注意:szieof
内的表达式并不进行计算,返回类型仅与操作符左边的数据类型有关
例如:short a = 12; int b = 1; size_t c = sizeof(a = b + 3);
此时 c 的值为 2 ,a 依旧为 12,并不会变化