初识C语言(四) typedef,static,register,#define 定义常量和宏,指针,结构体,& * . ->

目录

一、关键字typedef

二、关键字static

1. 修饰局部变量-称为静态局部变量

 2. 修饰全局变量-称为静态全局变量

 3. 修饰函数-称为静态函数

 三、关键字register

 四、#define 定义常量和宏

1.#define定义标识符常量

2.#define定义宏(宏是有参数的)

 五、指针

1.内存

 2.变量地址

3.指针变量

 4.指针变量的大小

 六、结构体

一、关键字typedef

typedef 顾名思义是类型定义(只能对类型),这里应该理解为类型重命名(把这个类型重新取个名字)。

typedef可以把平时复杂的类型,使用起来不方便的类型简化。

二、关键字static

static是用来修饰变量和函数的

1. 修饰局部变量-称为静态局部变量

2. 修饰全局变量-称为静态全局变量

3. 修饰函数-称为静态函数

1. 修饰局部变量-称为静态局部变量

 static修饰局部变量的时候,局部变量出了作用域后,没有销毁。
 本质上,static修饰局部变量的时候,改变了变量的存储位置。static修饰局部变量时,影响了变量的的生命周期,使其生命周期变长,和程序的生命周期一样。

 

 关于viod类型:

 2. 修饰全局变量-称为静态全局变量

 说明:static修饰全局变量的时改变了全局变量的链接属性。即static修饰全局变量的时候,这个全局变量的外部链接属性就变成了内部链接属性。其他源文件就不能再使用到这个全局变量了。

我们在使用g_val的时候,感觉它的作用域变小了,实际上上是把它的的外部链接属性变成了内部链接属性。(因为g_val是全局变量,所以它存放在静态区)

 3. 修饰函数-称为静态函数

 三、关键字register

 四、#define 定义常量和宏

1.#define定义标识符常量

2.#define定义宏(宏是有参数的)

 五、指针

1.内存

内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的 。所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节。为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址。

 

 2.变量地址

变量是创建内存中的(在内存中分配空间的),每个内存单元都有地址,所以变量也是有地址的。

3.指针变量

& 取地址操作符

关于int *p=&a的理解:

 

 *  解引用操作符

 4.指针变量的大小

//指针变量的大小
//不管是什么类型的指针,都是在创建指针变量
//指针变量是用来存放地址的
//指针变量的大小取决于一个地址存放的时候需要大多空间
//32位机器上的地址:32bit位(32个01组成的二进制序列) ————32/8= 4byte,所以指针变量的大小是4个字节
//64位机器上的地址:64bit位 ————64/8= 8byte,所以指针变量的大小是8个字节

 注:sizeof最后用%zu来打印。

 六、结构体

结构体是C语言中特别重要的知识点,结构体使得C语言有能力描述复杂类型。

比如描述学生,学生包含: 名字+年龄+性别+学号 这几项信息。

这里只能使用结构体来描述了。 例如:

  .  操作符

用指针打印

    ->

三种方式:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值