C语言串讲-2之指针和结构体

计算机组成:冯 诺依曼架构

编写程序:高级语言 硬件执行:机器语言(一种非常底层、特定的指令集)

**机器语言:**计算机可以将二进制代码存储在内存中,并且执行这些代码。 二进制位:也称为位(bit), 基数为2 的数字中的 0 或 1,它是信息的基本组成元素。 指令:计算机硬件所能理解并服从的命令(也是二进制位串)。

在计算机内部,指令和数据并没有本质的区别,它们都是以二进制形式存储的。

**汇编语言:**以助记符形式表示的机器指令。

**高级语言:**高级编程语言 C+ +、 Java 等可移植的语言,由一些单词和代数符号组成,可以由编译器转换为汇编语言。

存储器容量

在描述存储容量:1bit 1byte(1B) 1KB 1MB 1GB 1TB

在存储器,一个二进制位称为1bit。 1B:字节,1B=8bit

1B 1KB 1MB 1GB 1TB 由小到大,换算单位是2^10

数据类型

数据类型:定义内存空间⼤⼩的⼀个代名词,⽅便编译器能够合理的转换为对应的指令来操作内存空间。

以64位系统为例: char 1B int 4B long long 8B float 4B double 8B

一个特殊的数据类型,指针,是存放数据的内存单元地址。

指针

为了便于管理,存储器中,以8位(1字节)的大小构成一个存储单元。 计算机系统的内存拥有大量的存储单元,每个存储单元的大小为1字节,为了便于管理,必须为每个存储单元编号,该编号就是存储单元的"地址",每个存储单元拥有一个唯一的地址。

内存地址通常以十六进制形式给出。

存储内存地址的变量就是指针类型的。

64位系统中 指针类型 占 8B

为什么需要指针?

1.在不同区域之间的代码可以共享数据(直接通过指针指向相同的内存空间),特别是结构体,一个结构体中有很多数据,一个结构体变量就会占用大量空间。用指针去共享节省时间和内存。

2.指针占用的字节数是相同的。在(硬件/操作系统)数据存储按字节存储的。指针不同于一般变量,存的是变量的地址,在同一架构下地址长度都是相同的,所有不同类型的指针长度都一样。一般32位系统,指针长度为4个字节,64位则是8个字节。

3.一些操作必须使用指针, 例如申请内存。。。malloc :(void*)malloc(sizeof)

ig:(int *)malloc(size)

4.可以用指针搞一些复杂的结构-链表/树/图。。多重指针(二级指针)

变量名和(指针)地址的关系:学校名和详细地址

结构体

1数组允许定义可存储相同类型数据项的变量。 结构体是C编程中另一种用户自定义的可用的数据类型,它允许存储不同类型的数据项.

struct:声明结构体的关键字

tag 是结构体标签,是一个可选的标志,它是用来引用该结构体的快速标记。

member-list 是标准的变量定义,比如 int i; 或者 float f,或者其他有效的变量定义。

成员后面用分号;隔开,结构类型定义的末尾也有个分号;

variable-list 结构变量,是可选的,定义在结构的末尾,最后一个分号之前,您可以指定一个或多个结构变量。

结构体变量的声明/定义

1、类型定义和变量声明分开

2、类型定义的同时声明变量

结构体:指针与结构体

结构体指针: 结构体中的变量在内存中连续存放,结构体指针指向第一个变量。 C 语言中,我们可以使用 sizeof 运算符来计算结构体的大小,sizeof 返回的是给定类型或变量的字节大小。对于结构体,sizeof 将返回结构体的总字节数,包括所有成员变量的大小以及可能的填充字节。

访问成员变量:用"."还是"->" 结构体变量,用 "." 结构体指针变量,用 "->"

相关推荐
皮皮林5511 小时前
Java性能调优黑科技!1行代码实现毫秒级耗时追踪,效率飙升300%!
java
冰_河2 小时前
QPS从300到3100:我靠一行代码让接口性能暴涨10倍,系统性能原地起飞!!
java·后端·性能优化
桦说编程4 小时前
从 ForkJoinPool 的 Compensate 看并发框架的线程补偿思想
java·后端·源码阅读
躺平大鹅6 小时前
Java面向对象入门(类与对象,新手秒懂)
java
初次攀爬者7 小时前
RocketMQ在Spring Boot上的基础使用
java·spring boot·rocketmq
花花无缺7 小时前
搞懂@Autowired 与@Resuorce
java·spring boot·后端
Derek_Smart8 小时前
从一次 OOM 事故说起:打造生产级的 JVM 健康检查组件
java·jvm·spring boot
NE_STOP9 小时前
MyBatis-mybatis入门与增删改查
java
孟陬13 小时前
国外技术周刊 #1:Paul Graham 重新分享最受欢迎的文章《创作者的品味》、本周被划线最多 YouTube《如何在 19 分钟内学会 AI》、为何我不
java·前端·后端