【C语言】初识C语言(中篇)2

简介: 【C语言】初识C语言(中篇)

11. 常见关键字


C 语言标准中规定了32个关键字,而在之后C99的标准下又增加了五个关键字,anduin这次对大家进行归纳的是C标准中的32个关键字,我们根据其特性,可以把它分为几类:



数据类型关键字(12个)


char:声明字符型变量或函数


short:声明短整型或函数


Int :声明整型变量或函数


long :声明长整型变量或函数


signed:声明有符号类型变量或函数


unsigned:声明无符号整形变量或函数


foat:声明浮点型变量或函数


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:函数返回语句(可以带参数,也可以不带参数)



5.存储类型关键字(5个)


  • auto:声明自动变量,一般不使用


  • extern:声明变量实在其他文件中声明


  • register:声明寄存器变量


  • static:声明静态变量


  • typedef:用以给数据类型取别名(但是该关键字被分到存储关键字分类中,虽然看起来没什么相关性)


注意:存储关键字,不可以同时出现,也就是说,在一个变量定义的时候,只能有一个。



6.其它关键字(3个)


  • const:声明只读变量


  • sizeof:计算数据类型长度


  • volatile:说明变量在程序执行中可被隐含地改变



这里anduin带大家有选择性的,讲解几个关键字,若没有讲到日后我们一一讲解:



auto


auto 从字面意思来看就是自动的意思 它也被成为自动变量

局部变量都是自动创建自动销毁的,所以局部变量都是auto修饰的。


int main()
{
    auto int a = 10;//局部变量都是auto类型的,因此auto基本会被省略
    return 0;
}


typedef


本质


本质:类型重命名


使用方法

#include<stdio.h>
typedef unsignde int u_int;
int main()
{
    u_int x = 0; 
    return 0;
}


分析:当我们在写代码时,一些代码类型很长,例如无符号整型unsigned int或者结构体,指针等,这时我们就可以用typedef对它进行类型重命名,本段代码中就是用了typedef来重命名unsigned int为u_int。


作用


对类型重命名的一种解决方案,让我们在面临冗长的类型命名方面上更加简便,可以对一些不太好理解的数据类型进行简化。



register


我们先想想,数据在计算机上可以存放在哪里呢?


1.内存


2.硬盘


3.高速缓存


4.寄存器



存储金字塔

309be178d60b4f8887bb71ec8a006b1f.png


寄存器存在的本质


从硬件层面上,提高计算机的运算效率。当读取数据时,计算器先去寄存器中读取,如果没有读取到,再去高速缓存区中读取,最后才是内存,而且在cpu再读取寄存器中的数据时,内存->高数缓存区(cache),cache->寄存器,这个数据传递过程会持续进行,大大提高效率!



register 修饰变量


也就是相同的原理,尽量把所修饰变量,放入CPU寄存区中,从而达到提高效率的目的。


#include<stdio.h>
int main()
{
    register int a = 10;
    return 0;
}


register 修饰什么变量


register可不是什么变量都适合修饰的,要知道寄存器的价格是很昂贵的,register所修饰的变量也得"精挑细选"一番。



  1. 局部变量(全局变量由于其特性会导致CPU寄存器被长时间占用)
  2. 不会被写入的(写入就需要写回内存,register本身就是快速读取,后续还要读取检测的话,就与原目的背道而驰了)
  3. 高频被读取的变量(俗话说把钱用在刀刃上,存入了寄存器,当然要经常使用的)
  4. 如果要使用,不要大量使用,寄存器的数量是有限的!



小科普


register修饰的变量,不能取地址!!!


#include<stdio.h>
int main()
{
    register int a = 0; 
    printf("&a = %p\n", &a);
    return 0;
}



编译运行:

5f4350ff013f4997854a5b10e9ad1f0c.png


分析:因为register的作用,变量a已经被放入寄存器中了,你怎么取地址呢?




结语


以上就是初识C语言中篇的内容,虽然只有两个专题,但是内容其实也是很多的,希望我的文章对你有帮助,如果大家觉得anduin写的还可以的话,请点赞+收藏哦!你们的肯定就是对我最大的鼓励!


相关文章
|
6月前
|
存储 程序员 C语言
C语言(1)----C语言是什么?基本概念介绍
C语言(1)----C语言是什么?基本概念介绍
56 3
|
3月前
|
编译器 Linux C语言
C语言基础
C语言基础
40 0
|
3月前
|
存储 编译器 程序员
【C语言篇】C语言常见概念
编译时,注释会被替换成⼀个空格,所以min/* 这⾥是注释*/Value会变成min Value,⽽不是minValue。这是C99标准新增的语法。
36 0
|
6月前
|
存储 编译器 程序员
C语言基础——C语言常见概念
C语言基础——C语言常见概念
|
6月前
|
自然语言处理 算法 搜索推荐
C语言的编程
C语言的编程
39 1
|
C语言 C++
0基础初学C语言
0基础初学C语言
114 0
|
6月前
|
算法 C语言
『C语言初阶』第二章-初识C语言(2)
『C语言初阶』第二章-初识C语言(2)
【C语言】编程练习(四)
【C语言】编程练习(四)
|
Serverless C语言
【C语言】编程练习(三)
【C语言】编程练习(三)
|
双11 C语言
【C语言】编程练习(二)
【C语言】编程练习(二)