栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【C语言攻略】从零开始的C语言生活——(初阶篇)(C语言关键字)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【C语言攻略】从零开始的C语言生活——(初阶篇)(C语言关键字)

目录

关键字介绍

 static 关键字

static关键字的其他用法

结语


关键字介绍

在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

 其中也不乏有一些已经见过的关键字。也可以简单的给这些关键字做一个小归类

数据类型

char:字符型,表示字符

short : 短整形,比int 取值范围小的整形

int :整形类型,表示整数。

long :长整形,比int 取值范围更大的整形类型

float : 单精度浮点型,表示小数

double :双精度浮点型

void:表示无类型 可以定义函数类型 函数参数 修饰指针

选择语句

 if  : 用来判断条件

else:与if配套使用,假设if不执行可以走else

switch :判断选择执行语句,与case,default,break配套使用

case: 选项,根据所传值判断从哪条语句开始执行

default: 默认,假设case语句都没有执行,则默认执行default

中断和持续

break: 中断,用来跳出循环或者switch中的case语句

continue:持续,跳过本次循环的下面的代码,来到下一次循环,不会终止循环

循环语句

do :do while循环  do{ 语句项 }while(循环条件)

for:for循环,for(int i = 0;i < n;i++)

while:while循环  while(循环条件)

自定义类型

enum:枚举类型

struct : 结构体类型

union:联合体

有符号和与无符号

signed : 有符号数,计算机以二进制存储,第一个数为符号位,0表示正数,1表示负数,signed表示这个数的二进制数可以是1或0

unsigned: 修饰成无符号数,将这个数的二进制符号位修饰必须为0,所以这个数只能是正数

 其他

auto:表示局部,当创建一个局部变量时,局部变量的前面会默认有一个auto,所以可以不加

const:修饰常属性,将一个变量修饰具有常属性,不能被修改,但本质还是变量

extern:声明,用来声明外部函数或全局变量

goto:用来跳出多重循环,一个可以在代码中滥用的关键字,但是十分破坏代码结构,除去特殊情况,一般不建议使用,容易破坏代码结构,造成不必要错误。

register :寄存器,建议编译器这个变量应该尽量快,放到寄存器运行,但是只是建议,放置与否由编译器来决定

typedef :类型重命名,对数据类型进行重命名

return:返回,返回函数参数

sizeof:计算类型所占内存大小

volatile:volatile的作用是作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值

 static 关键字

这才是重头戏,static将局部变量修饰为全局变量。首先要了解内存分为3个区域,栈区、堆区、静态区。

 栈区是存放局部变量的地方,当变量的生命周期结束,则在出栈区自动销毁。静态区则是存放全局变量的,在整个工程结束之前里面的全局变量或全局常量都不会销毁,static就是将栈区的局部变量修饰之后放到静态区,延长了变量的生命周期。

这段代码,当每次调用test函数时,i的值每次都会被初始成0,然后+1,所以打印的全是1

void test()
{
    int i = 0;
    i++;
    printf("%d ", i);//1 1 1 1 1 1 1 1 1 1
}

int main()
{
 int i = 0;
    for(i=0; i<10; i++)
   {
        test();
   }
    return 0; 
}

当i被static修饰之后,i被修饰为静态变量,当每次调用函数i的值都不会被改变

void test()
{
    static int i = 0;
    i++;
    printf("%d ", i);//1 2 3 4 5 6 7 8 9 10
}

int main()
{
 int i = 0;
    for(i=0; i<10; i++)
   {
        test();
   }
    return 0; 
}

static关键字的其他用法

当简单了解了static的用法后,还有一些static的特殊用法,假设我创建了一个叫main.c的工程,然后又创建了另一个叫test.c的工程,当我在test.c中工程定义了一个全局变量,通过函数声明extern 关键字在main.c中声明后是可以在main.c中使用的。说明全局变量是具有外部链接属性的。

但是当test.c的全局变量被static修饰之后,在main.c中就不能再使用了,也就是static使全局变量失去了外部链接的属性,只能在本工程中使用,看似是变量的作用域变小了,但是函数的生命周期不变,生命周期还是整个工程。

不止全局变量具有外部链接属性,函数也同样具有外部链接属性。但是被static修饰后同样也不能在其他工程中使用。所以static关键字不止是将变量修饰到静态区,同样会使函数或变量失去外部链接的属性。同样可以利用static的特点来不让别人来随便使用全局变量或者函数,管理你的代码。

结语

生产队的驴都不敢这么歇,这多少有点摸鱼成分了

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/444183.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号