auto :声明自动变量 (auto int c; 等价 int c;)属于内存变量
register:用在调用频繁的变量,声明寄存器变量,寄存器一种可以声明变量的硬件
(1.定义寄存器变量不一定成功,失败自动定义成auto变量)
(2.寄存器变量没有内存地址)
break:跳出当前循环
continue:结束此次循环,开始下一轮循环
return :子程序返回语句,当执行到此函数后面程序都不在执行(可以带参数,也可不带参数)
switch : 用于开关语句
case:开关语句分支
default:开关语句中的“默认”分支
char :声明字符型变量或函数返回值类型
short :声明短整型变量或函数
int: 声明整型变量或函数
long :声明长整型变量或函数返回值类型
double :声明双精度浮点型变量或函数返回值类型
float:声明浮点型变量或函数返回值类型
const :声明只读变量(在c++里面可以修饰函数体)
static :声明静态变量(
1.初始化只赋值一次,不会在被重新定义
2.只能在本文档使用,存储在数据段
)//再进func函数时不会再次被赋初始值
main(){for(i=0; i<5; i++){func()}} fun(){static int i=10; printf("%d", i);}
输出 10,11,12,13,14
extern:声明变量或函数是在其它文件或本文件的其他位置定义
#define: 定义一个标识符来表示一个常量。其特点是:定义的标识符不占内存,只是一个临时的符号,预编译后这个符号就不存在了。预编译又叫预处理。预编译不是编译,而是编译前的处理。这个操作是在正式编译之前由系统自动完成的。
do :循环语句的循环体
if:条件语句
else :条件语句否定分支(与 if 连用)
enum :声明枚举类型
union:声明共用体类型
for:一种循环语句
goto:无条件跳转语句 使用方法(goto+要跳转到的函数)
sizeof:是关键字,在编译时计算缓冲区的长度包括结束字符 null。如:char sArr[] = "ILOVEC";
printf("sArr的长度=%d\n", sizeof(sArr)); sArr的长度=7
strlen:专门计算字符串有效长度的函数
1>sizeof关键字 -->包括'\0'
6 == sizeof("hello")
2>strlen:专门计算字符串有效长度的函数
5 == strlen("hello")
char buf[10] = "hello";
10 == sizeof(buf) -->计算数组buf的大小
6 == sizeof("hello") -->计算字符串的长度(包括'\0')
5 == strlen(buf) -->计算buf地址开始有多少个字符,遇到'\0'才结束
5 == strlen("hello") -->计算字符串有效长度的函数
struct:声明结构体类型
typedef:用以给“数据类型”取别名
1)基本数据类型取别名:typedef int INT; //给int取了一个别名叫INT;(int a 等价 INT a)
typedef unsigned int uint32;(uint32 b 等价 unsigned int b)
2)数组数据类型取别名: typedef int ARRD[3]; //表示给数组类型int ()[4];
3)函数指针数据类型取别名:int add(int, int); typedef int (*DUNC_P)(int, int);//给函数指针取别名int (*)(int, int);
4)结构体取数据类型取别名:typedef struct student{}STU;//给struct student取别名叫STU
struct student lisi; //定义结构体变量
SUT lisi; //定义结构体变量
struct student *p; //定义结构体指针
SUT *P; //定义结构体指针
signed: 声明有符号类型变量
unsigned:声明无符号类型变量或函数
void :声明函数无返回值或无参数,声明无类型指针
volatile:说明变量在程序执行中可被隐含地改变,防止编译器优化,使其每次都从其地址去访问,有时如果变量没有被做为左值或其他,编译器为提高效率会不从地址进行访问,造成数据访问不稳定
gets:标准输入设备读字符串函数
while :循环语句的循环条件
getchar: 输入字符类型数的时候,要考虑使用getchar,去掉后面的\n
bzero : 功能描述:置字节字符串前n个字节为零且包括‘\0’ char xingming[20]; bzero(xingming, 20);
int xingming; 当不是数组时要取地址 bzero(&xingming, sizeof(xiaochun));
malloc : 在堆中申请内存,对申请的内存会返回一个地址可以用指针接收这个地址,失败返回NULL
原型:void *malloc(size_t size); size --->表示要申请的字节数
用法:int *p = malloc(sizeof(char));*p='A';printf("*p:%d\n", *p);free(p);
free : 使用malloc后,结尾要再使用free释放内存
(使用的那块内存数据没有被清空,内存的地址也还保持在指针中,只是说这块内存我不用了删除了使用标记)
calloc :在堆中申请内存,对申请的内存会返回一个地址可以用指针接收这个地址,失败返回NULL
calloc申请的内存申请就已被清空,malloc申请的内存要手动清空(bzero)
原型:void *calloc(size_t nmemb, size_t size); // nmemb--->要申请几块内存 size--->申请的内存的大小
realloc : 在堆中申请内存,在char *p=malloc(100);申请的堆空间不够,用realloc可以申请辛堆空间进行扩展
原型:void *realloc(void *ptr, size_t size); //(NULL, 5)//申请一块的新的堆空间
//(p, 200)扩展p这块空间,增大100个字节
{如果在原基础内存上扩展的空间已经被其他变量使用,
它会重新在别的地方申请一块空间,这样内存的起始地址就会发生改变}
C语言关键字
最新推荐文章于 2025-05-08 20:10:01 发布