C语言【关键字】

C语言【关键字】,第1张

前言

头发渐渐稀少,可是我的技术还是这么菜,那里出现了问题啊
如果去剃个大佬发型,会不会变强呢!


关键字
  • 前言
  • 常见关键
  • 1. 关键字 typedef
  • 2. 关键字static
    • 修饰局部变量
    • 修饰全局变量
  • 3. 修饰函数
  • extern 声明外部符号
  • register 寄存器

常见关键

C语言提供了丰富的关键字,这些关键字都是语言本身预先设定好的,用户自己是不能创造关键字

while   for     goto   if     else   switch    case   default   break   continue
char    short   int    float  long   double   unsigned(无符号)  signed(有符号)
void    return   const  do while  sizeof
auto   enum(枚举)    extern(声明)   register(寄存器)     
static(静态修饰)  struct(结构体)   typedef(类型重定义)  union(联合体)   volatile 
1. 关键字 typedef

typedef 顾名思义是类型定义,这里应该理解为类型重命名。


unsigned int 重命名为shi_1, 所以shi_1也是一个类型名
typedef unsigned int shu_1;

int main()
{
    unsigned int num1 = 0;      这里的num1和num2这两个变量的类型是一样的
    shi_1 num2 = 0;           这两个变量的类型是一样的
    return 0;
}
2. 关键字static

在C语言中:static是用来修饰变量和函数的

  1. 修饰局部变量-称为静态局部变量
  2. 修饰全局变量-称为静态全局变量
  3. 修饰函数-称为静态函数
修饰局部变量
例如 1:                                例如 2void test()                              void test()
{                                       {
    int i = 0;                              static int i = 0;
    i++;                                    i++;
    printf("%d ",i);                        printf("%d ",i);
    }                                   }
 这结果是:1 1 1 1 1 1 1 1 1 1          这结果是:1 2 3 4 5 6 7 8 9 10
int main()                           
{                               
 int i = 0;                             
    for(i=0; i<10; i++)
   {
        test();
   }
    return 0;

对比代码1和代码2的效果理解static修饰局部变量的意义

结论:static修饰局部变量改变了变量的生命周期
让静态局部变量出了作用域依然存在,到程序结束,生命周期才结束。


修饰全局变量
代码1:
在另一个 .c源文件
int g_val = 2018;

test.c源文件
int main()
{
    printf("%d\n", g_val);
    return 0;
}
------------------------------------------------------
代码 2:
在另一个 .c源文件
static int g_val = 2018;

test.c源文件
int main()
{
    printf("%d\n", g_val);
    return 0;
}

代码1正常,代码2在编译的时候会出现连接性错误
总结: 一个全局变量被static修饰,使得这个全局变量只能在本源文件内使用,不能在其他源文件内使

3. 修饰函数
代码 1:
add.c源文件
int Add(int x, int y)
{
    return c+y;
}
test.c源文件
int main()
{
    printf("%d\n", Add(2, 3));
    return 0;
}
------------------------------------------------------
代码 2:
add.c源文件
static int Add(int x, int y)
{
    return c+y;
}
test.c源文件
int main()
{
    printf("%d\n", Add(2, 3));
    return 0;
}

代码1正常,代码2在编译的时候会出现错误
总结:一个函数被static修饰,使得这个函数只能在本源文件内使用,不能在其他源文件内使用

extern 声明外部符号
add.c文件
全局变量
int shenmi = 2022;
------------------------
test.c文件
声明外部符号
extern int shenmi;
int main()
{
  printf("%d\n",shenmi):
  return 0;
}
register 寄存器

register的作用就是建议编译器优先将此信息优先存放在寄存器中,

来都来了,高台贵手,点个赞吧!
欢迎留言评论,交流进步!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/634284.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-16
下一篇 2022-04-16

发表评论

登录后才能评论

评论列表(0条)

保存