物联网-C——6、修饰符

signed

有符号修饰符

unsigned

无符号修饰符

void

空类型

auto

理解不了,不知道有啥用

extern

可以将工程内其他文件定义的函数或者变量在当前文件用extern声明,声明后即可调用
要注意的是如果该函数或变量不能被static修饰,如果是被static修饰的变量或函数是不可以被extern外部声明的

extern int i;//i需要在其他文件定义,在此声明
int main() {
	
printf("%d\n",i);

	return 0;
}

register

static静态修饰

1、静态全局变量
改变全局变量的作用域为当前文件

static int i = 12;
//作用域为当前文件
int main() {

	printf("%d\n",i);
	return 0;
}

2、静态局部变量
改变局部变量的生命周期至结束

int Add(int a) {
	static int b = 10;//生命周期延长,函数结束变量不销毁
	b++;
	return a + b;
}
int main() {
	printf("%d\n",Add(12));
	printf("%d\n",Add(12));
	
	return 0;
}

3、静态函数
该函数作用域仅为当前文件内

static int Add(int a) {
	int b = 10;
	b++;
	return a + b;
}

const

const修饰的常变量
const 修饰的变量 == 常量

const int Day = 7;
int main()
{
	printf("%d\n",Day);
}

常量的生命周期

常量是存储在全局区,全局区的内存会在程序结束后由系统释放,所以常量的生命周期是到程序结束才会被释放

全局常量和局部常量

常量被定义在函数外部时,该常量为全局常量,作用域为整个工程,在其他文件使用只需要extern声明即可。
常量被定义在函数内部时,此时该常量为局部常量,作用域为函数内。

static const修饰的全局常量

static const修饰的全局常量会限制该常量作用据为本文件,用extern声明也不行。

typedef

1、给数据类型起个别名

#include <stdio.h>

typedef unsigned int Byte;



int main() {

    Byte a=10;
    printf("%d\n",a);

    return 0;
}

2、结构体别名

typedef struct student{

    char* name;
    char* tel;
}stu;

int main() {

    stu s;
    s.name = "laoliu";
    s.tel = "13991939129";
    printf("%s\n",s.name);
    printf("%s\n",s.tel);

    return 0;
}

volatile

易变修饰,告诉编译器这个变量是容易改变的,可以避免变量被优化。

#deifne

1、#define宏定义常量

 代码:
#define Day 7
int main()
{
    printf("%d\n",Day);
}

注:建议宏定义时不加分号";“,因为 #define 会将代码中的常量名,全部替换为定义的值,包括分号”;"
如下所示,如果加了分号,
编译器会在预编译时将main函数中的Day替换为7;
因此会报错。

#define Day 7;
int main()
{
   printf("%d\n",Day);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值