初识C语言 DAY7 【初识关键字】


前言

本文章总结于此视频

初识关键字

首先我们把所有的关键字进行分类:

这里是引用

数据类型关键字(12个)
char、short、int、long、signed、unsigned、float、double、struct、union、enum、void
char :声明字符型变量或函数
short :声明短整型变量或函数
int : 声明整型变量或函数
long :声明长整型变量或函数
signed :声明有符号类型变量或函数
unsigned :声明无符号类型变量或函数
float :声明浮点型变量或函数
double :声明双精度变量或函数
struct :声明结构体变量或函数
union :声明共用体(联合)数据类型
enum :声明枚举类型
void :声明函数无返回值或无参数,声明无类型指针
————————————————

这里是引用

控制语句关键字(12个)

  1. 循环控制(5个)
    for :一种循环语句
    do :循环语句的循环体
    while :循环语句的循环条件
    break :跳出当前循环
    continue :结束当前循环,开始下一轮循环
  2. 条件语句(3个)
    if : 条件语句
    else :条件语句否定分支
    goto :无条件跳转语句
  3. 开关语句 (3个)
    switch :用于开关语句
    case :开关语句分支
    default :开关语句中的 “ 其他 ”分支
  4. 返回语句(1个)
    return :函数返回语句 ( 可以带参数,也看不带参数)
    ————————————————

在这里我们重点讲解几个关键字typedef static register

这里补充一个知识点
变量的命名:
1.变量名不能是关键字。
2.名字必须是数字,下划线,字母组成的,不能有特殊字符,同时不能以字母开头
例如: int 2b (err) // int _2b (right)

一、typedef

typedef其含义就是:类型重命名
举例:

#include <stdio.h>

typedef unsigned int uni;
    int main()
    {
        unsigned int num1 = 0;
        uni sum2 = 1;
        printf("%d\n", sum2);
        return 0;
    }

运行如下:
在这里插入图片描述
这里的 unsigned int 与 uni 是等效的,因为有

typedef unsigned int uni;

二.关键字static

static用来修饰变量和函数的

修饰局部变量(称为静态局部变量)

原本变量会在栈区去开辟空间,但修饰之后会将变量存储到静态区,改变的是变量的生命周期,并不是作用域,因为其在栈上开辟的空间在使用完会自动释放,而在静态区存储的变量相当于全局变量,会持续存在到程序执行完毕才释放变量所占的空间
举个例子:

#include <stdio.h>
void test ()
{
   int a = 1;
   a++;
   printf("%d", a);
}
   int main()
    {
       int i = 0;
       while (i < 10)
       {
           test();
               i++;
       }
        return 0;
    }

运行如下:

在这里插入图片描述
因为 a 为局部变量,所以在出作用域时就会销毁
因为static可以修饰局部变量,所以:

 static int a = 1;
#include <stdio.h>
void test ()
{
  static int a = 1;
   a++;
   printf("%d", a);
}
   int main()
    {
       int i = 0;
       while (i < 10)
       {
           test();
               i++;
       }
        return 0;
    }

这次结果是什么呢?运行如下:
在这里插入图片描述
我们猜测变量 a 出作用域时没有被销毁,其一直被保留。
static修饰的变量,改变了变量的存储位置。
影响了变量的生命周期。
在这里插入图片描述
普通的局部变量存放在栈区,生命周期作用域。
static修饰的变量在静态区,生命周期 是整个程序。

这里是引用

static的两个重要作用:

1、修饰变量。变量又分为局部变量和全局变量,但它们都存在内存的静态区。

2、修饰函数。函数前加static使得函数成为静态函数。但此处“static”的含义不是指存储方式,而是指对函数的作用域仅局限于本文件(所以又称内部函数)。使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数是否会与其他文件中的函数同名。

注:在其他的文件中定义的变量,我们可以使用extern来声明此变量,供我们来使用,但是如果在其他文件中该变量被static定义了,我们就无法跨文件使用该变量了。

static修饰全局变量

当我们写一个有关全局变量的代码:
只要加上 extern int n1就可以使用
在这里插入图片描述
但当我们加上static int n1 时,会运行失败。
y在这里插入图片描述[因为static修饰全局变量时,这时这个全局变量的外部链接属性就变成了内部链接属性。其他源文件(.c)就不能再使用这个全局变量了。

static 修饰函数

与static修饰全局变量相似
在这里插入图片描述
加入static运行如下
在这里插入图片描述

标题

这里是引用

使用:尽量将变量放入寄存器,从而达到提高运算效率。

补充知识:cpu是主要负责计算的硬件单元,但为了方便计算,一般第一步需要先把数据从内存读取到CPU内,那么就需要cpu也具有一定的数据储存能力,故现代cpu中形成了一套叫寄存器的硬件器。
在这里插入图片描述
原文链接
register会尽量将变量放入寄存器,从而达到提高运算效率

总结

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

马职音人

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

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

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

打赏作者

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

抵扣说明:

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

余额充值