C语言-常见关键字、常量和宏

常见关键字

  • C语言提供的关键字

  • C语言提供的,不能自己创建关键字
  • 变量名不能是关键字
  • 常见关键字
    auto自动-每个局部变量都是auto修饰
    自动创建-自动销毁
    break循环
    caseswitch语句中使用
    char字符类型
    const常变量
    continue继续
    default默认
    dodo...while
    double双精度
    else选择语句
    enum枚举常量
    extern声明外部符号的--全局变量
    float单精度浮点
    for循环
    goto无条件转移语句
    if如果
    int整形
    long长形
    register寄存器关键字
    return返回值
    short短形整形
    signed有符号的
    sizeof字符型大小
    static静态
    struct结构体
    typedef类型重定义
    union联合体(共用体)
    unsigned无符号的
    void无-空
    volatile段位
    while循环

    register寄存器关键字

    计算机中数据存储
    寄存器容量比高速缓存小,存储速度比高速缓存更快
    高速缓存容量比内存小,存储速度比内存更快
    内存容量相比硬盘小,存储速度比硬盘更快
    硬盘容量相比网盘小,存储速度比网盘更快
    网盘容量大,存储速度慢

#include <stdio.h>
int main() {
	//大量频繁被使用的数据,可以放在寄存器中,提升效率
	register int num = 100;//建议num的值放在寄存器中
	printf("%d",num);
	return 0; 
}

运行结果:

typedef 类型重定义

#include <stdio.h>
//typedef 类型重定义
typedef unsigned int u_int;
int main() {
	u_int num = 100;
	printf("%d",num);
	return 0;
}

运行结果:

static-静态的

  • static修饰局部变量
    改变了局部变量的生命周期(本质上是改变了变量的存储类型)
    栈区:局部变量、函数的参数
    堆区:动态内存分配
    静态区:全局变量,static修饰的静态变量
  • static修饰全局变量
    使的这个全局变量只能在自己所在的源文件(.c)内部可以使用,其他源文件不能使用
  • static修饰函数
    使得函数只能在自己所在的源文件内部使用,不能在其他源文件上使用
    本质上static是将函数的外部链接属性变成了内部链接属性(和static修饰全局变量一样)
  • 全局变量
    在其他源文件内部可以被使用是因为全局变量具有外部链接属性,但是被static修饰之后,就变成了内部连接属性,其他源文件不能链接到这个静态的全局变量

#include <stdio.h>
//不加入static修饰
void test1() {
	int a = 1;
	a++;
	//输出2 2 2 2 2 2 2 2 2 2
	//从main进入,进入while循环,进入test(),a=1,a++,a为2,跳出销毁
	//循环进入test(),a = 1,a++,a为2
	printf("%d\n", a);
}


//加入static修饰
void test2() {
	static int b = 1;
	b++;
	//输出2 2 2 2 2 2 2 2 2 2
	//从main进入,进入while循环,进入test(),a=1,a++,a为2,跳出
	//循环进入test(),a = 2,a++,a为3
	printf("%d\n", b);
}
int main() {
	printf("不加入static修饰\n");
	for (int i = 0; i < 10; i++) {
		test1();
	}
	printf("加入static修饰\n");
	for (int i = 0; i < 10; i++) {
		test2();
	}
	return 0;
}

运行结果:

extern 声明外部符号

#include <stdio.h>
int add(int x, int y) {
	return x + y;
}
#include<stdio.h>
//extern 声明外部符号
extern int add(int x, int y);
int main() {
	int a = 2;
	int b = 4;
	int sum = add(a, b);
	printf("sum=%d\n", sum);
}

运行结果:

#define定义常量和宏

  • define是一个预处理指令

  • define定义符号
  • define定义宏

#include<stdio.h>

#define MAX 1000
#define ADD(x,y) ((x)+(y))

int main() {
	//1.define定义符号
	printf(" %d\n", MAX);//输出1000

	//2.define定义宏
	printf("%d\n", ADD(2, 3));//5,定义的ADD(x,y) x y   x是2,y是3,x+y=5
	printf("%d\n", 4 * ADD(2, 3));//11;4*ADD(2,3)=4*2+3=11
	printf("%d\n", 4 * ADD(2, 3));//20;4*ADD1(2,3)=4*(2+3)=20
	return 0;
}

运行结果:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值