关键字typedef、static的使用


c语言中的关键字

在89/90的第一版c语言中,c语言的关键字有32个
如下

auto break case char const continue default do double else enum
extern float for goto if int long register return short signed
sizeof static struct switch typedef union unsigned void volatile while


关键字的特点

1、c语言提供的,不能自己创建关键字

2、变量名不能是关键字,下面这种就是错误的写法


typedef关键字的使用

作用:类型定义/类型重定义

当我们使用unsigned int来定义变量的时候,可能会因为它太长了导致难写,所以我们用typedef来重新定义unsigned int,使得定义简略

下面的unsigned int和u_int意思一样

#include <stdio.h>
typedef unsigned int u_int;//将unsigned int重定义为u_int
int main()
{
	unsigned int num = 100;
	u_int num = 100;//这里的两个定义的类型都是一样的,只不过名字发生了变化
	return 0;
}

static关键字的作用

static修饰局部变量
void test()
{
    int a = 0;//进函数存在,出函数被销毁
    a++;
    printf("%d",a);
}

int main()
{
    int i = 0;
    while(i<10)
    {
        test();
        i++;
    }
    return 0;
}
void test()
{
    static int a = 0;//static修饰后,出了局部范围不会销毁,下一次进入函数的时候依然存在,并且只要第一次调用的时进行初始化
    a++;
    printf("%d",a);
}

int main()
{
    int i = 0;
    while(i<10)
    {
        test();
        i++;
    }
    return 0;
}
内存中存储空间的分配

在这里插入图片描述

static修饰的局部变量是存储在静态区的

所以static修饰局部变量时,实际改变的是变量的存储位置,本来一个局部变量是放在堆区的,被static修饰后放在了静态区,从而导致出了作用域依然存在,生命周期并没有结束,但是它的作用域并没有发生变化

静态区中的数据的声明周期和程序的生命周期是一致的,程序结束,静态数据的生命周期也就到了



static修饰全局变量

一个全局变量本来是具有外部链接属性的,但是被static修饰后外部链接属性就变成了内部连接属性,只能在自己所在的源文件内部使用,不能在其他文件内部使用

感觉全局变量的作用域变小



static修饰函数

一个函数本来具有外部链接属性的,但是被static修饰之后,外部链接属性就变成了内部链接属性,这时,这个函数只能在自己所在的源文件内部使用,其他文件无法使用的

感觉函数的作用域变小

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一起慢慢变强

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值