C语言基础-初识
目录
一、数据类型
二、常量与变量
1、变量
1.1、变量的声明
一劳永逸的函数库与宏的引入方法
1.1、变量的作用域
1.1.1 局部变量
1.1.2、全局变量
1.2、变量的生命周期
1.2.1、局部变量
1.2.2、全局变量
2、常量
2.1、常量类型
三、数据类型
1、char类型
1.1 、\0字符串结束标识符
1.2、转义字符
四、关键字
1、typedef
目录
一、数据类型
二、常量与变量
1、变量
1.1、变量的声明
一劳永逸的函数库与宏的引入方法
1.1、变量的作用域
1.1.1 局部变量
1.1.2、全局变量
1.2、变量的生命周期
1.2.1、局部变量
1.2.2、全局变量
2、常量
2.1、常量类型
三、数据类型
1、char类型
1.1 、\0字符串结束标识符
1.2、转义字符
一、数据类型
类型 | size(字节) | 最大值 | 最小值 | |
char | 字符型 | 1 | ||
short | 短整型 | 2 | -2^7 | 2^7-1 |
int | 整型 | 4 | -2^15 | 2^15-1 |
long | 长整型 | 4 | -2^31 | 2^31-1 |
long long | 长长整型 | 8 | -2^63 | 2^63-1 |
float | 单精度浮点型 | 4 | ||
double | 双精度浮点型 | 8 |
sizeof(long) >= sizeof(int),这里取值为=,
二、常量与变量
1、变量
1.1、变量的声明
int b = 20; //全局变量声明
int main()
{int a = 10; //局部变量声明return 0;
}
当全局变量名和局部变量名重复时,就近原则使用局部变量。
一劳永逸的函数库与宏的引入方法
VS中创建.c文件,都是对newc++file.cpp的复制,newc++file.cpp的这个文件在安装路径下D:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\VC\VCProjectItems
将创建常用.c文件需要的引入的函数库和宏写入保存,之后就每次使用VS创建.c文件,这些定义的宏和函数都会直接写入.c文件中。
1.1、变量的作用域
1.1.1 局部变量
作用域:变量所在的局部范围,即{}内
1.1.2、全局变量
作用域:变量所在的工程范围内,
全局变量具有外部链接属性,可以通过extern 关键字,链接到其他文件中
1.2、变量的生命周期
1.2.1、局部变量
进入作用域生命周期开始,出作用域生命周期结束
1.2.2、全局变量
程序的开始到结束
2、常量
2.1、常量类型
描述不变量,C语言中常见的四种常量:
字面常量、const修饰的常变量、#define定义的标识常量、枚举变量
enum Color
{RED, //1、枚举常量red红色YELLOW, //枚举常量yellow红色
};#define MAX 100; //2、#define定义的标识常量,没有类型
//const修饰的常变量,const修饰的属性,本质是变量,但是不能被修改,所以为常量
const int a = 100;
int main()
{100; //3、字面常量,定义在函数内const int a = 10; //4、const修饰的常变量,可以定义在整个.c文件enum Color c = RED; //枚举常量的引用return 0;
}
三、数据类型
1、char类型
1.1 、\0字符串结束标识符
字符型:char c = ‘a’;字符类型结尾是’a‘;
字符串型:char str[] = ”adb“;字符串结尾是'\0',而不是‘b';
在C语言中,字符串的存储,使用的是字符数组char str[] = "abcd";
求字符串长度函数
#include <string.h>
...
int len = strlen(char str);//求字符串的长度
1.2、转义字符
转义字符 | 释义 |
\? | 在书写连续多个问号时使用,防止他们被解析成三字母词(将三个字母解析成一个字母),如:??) 会被解析成 ],目前编译器不在支持三字母词 |
\` | 用于表示字符常量` |
\" | 用于表示一个字符产内部的双引号 |
\\ | 用于表示一个反斜杠,防止它被解释为一个转义序列符 |
\a | 警告字符,蜂鸣 |
\b | 退格符 |
\f | 进纸符 |
\n | 换行 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
\ddd | ddd表示1~3个八进制的数字。如:\130X |
\xdd | dd表示2个十六进制数字。如:\x30 0 |
四、关键字
1、typedef
1.1、定义
类型定义,也叫类型重命名,将指定类型重新定义为其他标识,
如:
//将unsigned int 重定义为 unit ,可以使用uint常见无符号整型
typedef unsigned int uint;
typedef struct Node //将结构体struct Node ,重新定义为Node,可使用Node创建结构体
{int val;struct Node* next;
}Node;
//typedef 类型定义
typedef unsigned int uint; //将unsigned int 重定义为 unit ,可以使用uint常见无符号整型
typedef struct Node //将结构体struct Node ,重新定义为Node,可使用Node创建结构体
{int val;struct Node* next;
}Node;
int main()
{unsigned int a = 100; //无符号整型a = 100;uint b = 20; //无符号整型b=20;struct Node node1;Node node2;return 0;
}
2、static
静态,可以用来修饰变量,也可以用来修饰函数
2.1、static修饰局部变量
staitic修饰局部变量为静态局部变量,该函数调用结束后,静态局部变量不销毁,只有在程序执行结束时,销毁静态局部变量。
本质上,static修饰局部变量,将静态局部变量的存储位置从栈区迁移到了静态区上,从而修改了生命周期!
void test()
{static int a = 1; //静态局部变量,加载阶段创建,程序运行结束销毁int b = 1; //局部变量,运行函数时创建,函数执行结束销毁a++;printf("%d\n", a);
}
栈区:进栈创建,出栈销毁
静态区:程序开始运行创建,程序运行结束销毁
2.2、静态全局变量
使用static修饰的变量,其作用域是自身源文件(.c),全局变量失去外部链接属性,变成内部链接属性,其他源文件(.c)就不可以使用这个变量。
2.3、static修饰函数
3、extern 声明外部符号
4、register——寄存器
电脑的存储设备:硬件,内存,高速缓存(cache),寄存器(集成在cpu上)
五、define定义常量和宏
1.1、定义标识符常量
#define NUM 100; //定义标识符常量
1.2、定义宏
1.2.1、什么是宏
用一个字符串表示有意义的常量或常量表达式(被称为宏);
#define ADD(x,y) ((x) + (y)) //定义宏
int main()
{int a = 10;int b = 10;int c = ADD(a, b);printf("%d", c);return 0;
}
#define ADD(x,y) ((x) + (y)) //定义宏
#define 使用define定义宏
ADD 定义宏名
(x,y) 宏的参数
((x) + (y)) 宏体,宏的具体内容