我的c语言进阶学习笔记 ----- 关键字

前言

这是我自己在学习c语言基础后,产生兴趣想继续深入学习,故开篇文章来记录一下,这段时光,这个最坏的时光,也是最好的时光。

关键字

c语言标准定义的32个关键字

关键字    意义
auto    声明自动变量,缺省时编译器一般默认auto
int    声明整形变量
double    声明双精度变量
long    声明长整型变量
char    声明字符型变量
float    声明浮点型变量
short    声明短整型变量
signed    声明有符号类型变量
unsigned    声明无符号类型变量
struct    声明结构体变量
union    声明联合体数据类型
enum    声明枚举类型
static    声明静态变量
switch    用于开关语句
case    开关语句分支
default    开关语句中的“其他”分支
break    跳出当前循环
register    声明寄存器变量
const    声明只读变量
volatile    说明变量在程序执行中可被隐含的改变
typedef    主要用以给数据类型取别名
extern    声明变量是在其他文件中声明
return    子程序返回语句(可以带参数,也可以不带参数)
void    声明函数无返回值或无参数,声明空类型指针
continue    结束当前循环,开始下一轮循环
do    循环语句的循环体
while    循环语句的循环条件
if    条件语句
else    条件语句否定分支(与if连用)
for    一种循环体
goto    无条件跳转语句
sizeof    计算对象所占内存空间大小
(22条消息) C语言标准定义的32个关键字_dengchuanjing的博客-CSDN博客_c语言用户标识符32个icon-default.png?t=M5H6https://blog.csdn.net/dengchuanjing/article/details/79265323

什么是定义,什么是声明?

定义就是编译器创造一个对象,为这个对象分配一堆内存并取上一个名字,变量名和对象名。

声明:第一重含义就是告诉编译器,这个名字已经匹配到一块内存上了,下次可以直接用变量名,声明可以多次出现。第二重含义是告诉编译器,这个名字已经预定了,别的地方不能再将他作为变量名,注意是作为变量名而不是用。比如

int i;定义

extern int i;声明

其他的关键字

auto

就当他不存在吧,编译器默认所有的变量都是auto

register

register请求编译器尽可能的将变量存在cpu内部寄存器中,而不是通过内存寻地址访问。

最快的调用

而寄存器则是,cpu与内存条之间的中转站,cpu访问速度快但造价工艺成本高

同时register变量不能用&来获取register变量地址

static

先来说说

静态全局变量:作用域仅限于变量被定义的文件中,其他文件即使使用extern声明也没法使用它

静态局部变量:在函数体内定义,只能在该函数里用了。即使这个函数运行结束,这个静态变量的值也不会被销毁,函数下次还能用到这个值。

static int i;//全局变量

void fun1(void)

        static i++;//静态局部
}

修饰函数,变成静态函数,好处是不用担心自己定义的函数是否会与其他文件函数同名。

基本数据类型

在这里插入图片描述

 

(1)短整型 short(内存中占2个字节)
是short int 的简写。
取值范围:-32768 ~ + 32767 (2 Bytes)

定义常量:short a = 5;

(2)整型int(long int) (4字节)
long是long int 的简写。
取值范围:-2147483648 ~ +2147483647 (4 Bytes)

定义:
int a = 0; //定义最好进行初始化
long a = 0;
//上述两种定义相同。

(3)长整型long long (8字节)

PS:(1)C语言标准是这样规定的:int最少16位(2字节),long不能比int短,short不能比int长,具体位长由编译器开发商根据各种情况自己决定。
(2)32位平台下long 是4个字节,long long 是8字节;但是64位平台下则全是8字节。因此为了保证平台的通用性,程序中尽量不要使用long数据类型。

2、浮点型
(1)单精度float
系统的基本浮点类型。至少能精确表示小数点后6位有效数字。
一个float类型占用4个字节的存储位。
其中最高位为符号位,紧接着8位为指数位,剩下的23位为尾数位。
格式说明符:%f

(2)双精度double
双精度浮点类型。至少能精确表示小数点后12位有效数字。
一个double类型占用8个字节的存储位。
最高位为符号位,紧接着8位为指数位,剩下的52位为尾数位。
格式说明符:%lf
 

(3)字符型

在这里插入图片描述

数组

是按照顺序存储的一系列类型相同的值,如10个char类型的字符或15个int类型的值。整个数组有一个数组名,通过整数下标访问数组中单独的项或元素。
例如:以下声明:
float debts[20];//声明debts是一个内容20个元素的数组,每个元素都可以存储float类型的值。数组的第一个元素是debts[0],第2个元素是debts[1],以此类推,直到debts[19]。注意,数组元素的编号从0开始,不是从1开始。可以给每个元素赋float类型的值。
例如,可以这样写:debts[5] = 32.54;debts[6] = 1.2e + 21;实际上,使用数组元素和使用同类型的变量一样。


结构体

是一种自定义的复合数据类型。例如存储学生信息就会用到此种数据类型。


共用体

也叫联合体,使几个不同类型的变量共占一段内存(相互覆盖),也就是说共用体的成员共用一片内存,后赋值的成员变量的数据才是共用体的生效数据,因为前面的赋值已经被覆盖了。共用体所占内存至少能够容纳最大的成员变量所需的空间