C语言-static关键词,寄存器变量,define宏定义

static

static修饰局部变量

复制代码
#include<stdio.h>


//static修饰局部变量
void test() {
	//int a = 1;
	//a++;
	//printf("%d ", a); //输出: 2 2 2 2 2 2 2 2 2 2 

	static int a = 1;  //static修饰局部变量的时候,局部变量出了作用域,不销毁的;本质上,static修饰局部变量的时候,改变了变量的存储位置
	a++;
	printf("%d ", a); //输出: 2 3 4 5 6 7 8 9 10 11
}
int main() {
	int i = 0;
	while (i<10) {
		test();
		i++;
	}
	return 0;
}

static修饰全局变量

复制代码
创建一个add.c文件,内容如下:
//全局变量
static int g_val = 2026;

//全局函数
static int Add(int x, int y) {
	return x + y;
}



//创建一个main.c文件,内容如下

#include<stdio.h>

//static修饰全局变量(全局变量的外部链接属性就变成了内部连接属性,其他源文件(.c)就不能在使用这个全局变量)
//声明外部符号
extern int g_val;

int main(){
	printf("%d\n",g_val);
}

static修饰函数

复制代码
创建一个add.c文件,内容如下:
//全局变量
static int g_val = 2026;

//全局函数
static int Add(int x, int y) {
	return x + y;
}

#include<stdio.h>

//static修饰函数(全局函数的外部链接属性就变成了内部连接属性,其他源文件(.c)就不能在使用这个全局变量)
extern int Add(int x, int  y);

int main() {
	int a=10;
	int b = 20;
	int z = Add(a,b);
	printf("%d\n", z);
}

寄存器变量

复制代码
#include<stdio.h>
//寄存器变量
int main() {
	register int num = 3;//建议: 3 存放在寄存中
	return 0;
}

define宏定义

复制代码
#include<stdio.h>
//define定义标识符常量
#define NUM = 100;

//define定义宏
//宏是有参数的
#define ADD(x,y) x+y
int main() {
	int a = 10;
	int b = 20;
	int c = ADD(a,b);
	printf("%d\n", c);
}
相关推荐
1024奇点8 小时前
【仓颉语言入门 · 第二篇 第 22 课】
开发语言·ide·开源
Warren2Lynch9 小时前
C4 模型详解:利用 Visual Paradigm 可视化软件架构的综合指南
开发语言·uml
Knight_AL9 小时前
Java 文件下载时文件名中的 `#` 被转换成 `%23`?一次 URL 编码与解码问题排查
java·开发语言
FRing0310 小时前
vue2干货总结2(v-bind、v-for、v-model、指令修饰符、v-bind操作class和style)
开发语言·前端·vue.js·vue2
蹊黎10 小时前
Linux 下用 C 语言实现进度条
linux·c语言·单片机
by2099911 小时前
C++ 智能指针的所有权与使用
开发语言·c++·经验分享
砚底藏山河11 小时前
python量化自定义周期 K 线合成
java·开发语言·数据库·python·金融
IT召唤狮11 小时前
开源企业级零信任项目Pangolin,零信任能挡住PHP核弹漏洞吗?
开发语言·开源·php
知已难寻11 小时前
03 · OpenStack的计算管理 Nova
运维·服务器·开发语言·云原生·云计算·openstack·开源软件
Rover Ramble11 小时前
C++ 用互斥锁实现读写锁
开发语言·c++