zoukankan      html  css  js  c++  java
  • 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个指针,前指针和后指针,前指针指向前一个节点,后指针

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

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

    点。

     

  • 相关阅读:
    一道看似简单的sql需求却难倒各路高手
    MahApps.Metro怎么调用消息窗口
    CodeSmith Generator 7.0.2激活步骤
    8款图表插件推荐
    VS的代码分析工具
    RDLC系列之六 打印纸张的大小(未解决)
    初识python
    应用程序的更新
    Expression<Func<T,TResult>>和Func<T,TResult>
    HTML5 history新特性pushState、replaceState
  • 原文地址:https://www.cnblogs.com/zou27/p/4983649.html
Copyright © 2011-2022 走看看