C语言高级第一节杂谈

计算机程序 = 代码 + 数据

代码是动作,数据是数字

程序运行的目的:结果,过程

冯洛伊曼结构和哈佛结构

冯洛伊曼结构:数据和代码放在一起。

哈佛结构:数据和代码分开存放。

核心点:存放介质是否相同。

在S5PV210的linux系统中,数据和代码存放在DRAM中,属于冯偌依曼结构。

在一般单片机中,代码在Norflash(外存)中,数据存放在ram(内存)中。属于哈佛结构。

内存管理方法

(1)操作系统和裸机:

操作系统:使用API管理。

裸机:直接操作内存。

(2)语言角度来说:

汇编:操作内存直接使用地址。

C语言:编译器帮忙管理,通过变量名。如果需要大量内存,在OS中,用malloc,在裸机中,用数组等数据结构。

内存编址模型

 把内存看成一栋楼,内存中的单元格好像大楼中一个一个的小房间,

一层有4个房间(32位系统),每个房间有一个编号(地址)每个房间可以

1个字节(内存编址以字节为单位)

最简单的数据结构:数组

注意:数组的定义是一定要是指明首地址和长度的。变量名代表首元素首地址

结构体内嵌指针实现面向对象

1 struct s
2 {
3     int age;                         
4     void (pfunc*)(void)        
5 }

age 相当于class中的成员,用一个函数指针指向一个void func(void)的函数,函数

类似于class中的方法,则可以实现面向对象。

四种栈

空栈:栈指针指向空位,每次存入直接存入然后栈指针移动一格,每次取出则先移动一个才能取出

满栈:栈指针指向栈中最后一格数据,每次存入需要先移动栈指针一格再存入,取出直接取出,然后在移动栈指针

增栈:栈指针移动时向地址增加的方向移动的栈

减栈:栈指针移动时向地址减少的方向移动的栈

需要防止栈溢出,不能定义太多局部变量。

链表简介

链表是由一个一个节点组成,一个节点包括2个指针,前指针和后指针,前指针指向前一个节点,后指针

指向后一个节点,这样就把一个一个节点连接起来了。

以上比较杂的知识点来自朱老师物联网大讲堂,是自己重复看第二遍的一些不太懂的知识

点。

 

原文地址:https://www.cnblogs.com/zou27/p/4983649.html