C零基础视频-32-指针铺垫知识:计算机分级结构

目录

  • 计算机的体系结构
  • 什么是内存
  • 指针

计算机的体系结构

  • 冯诺依曼体系结构
  • 哈佛体系结构

CPU是计算的核心,用于解析机器码和执行指令。CPU的数据处理能力非常快,但是(寄存器的)存储空间非常有限。
内存的数据传输速度适中(与CPU、硬盘比),存储空间适中;
硬盘数据传输速度慢,存储空间大。

CPU可以(通过总线)直接操作内存,这样的能力体现在CPU指令上。实际上,计算机的绝大多数功能,都是通过CPU操作内存直接体现的。
其他的显示器、硬盘、打印机等是“外设”。
因此,CPU如何定位内存操作内存,非常重要。

什么是内存

从硬件角度看,内存就是内存条。
从软件角度看,每一个程序运行后,操作系统会分配一块空间给该程序,正在运行的程序的数据,绝大多数放在内存中;
为了能够让CPU可以精确操作每一处内存,所有的内存都有编号,他们被称为内存地址
对于32位程序,内存地址的范围从0到0xFFFFFFFF。

  • 内存是一个小区
  • 内存地址是门牌号码

指针

C语言为了更好地表达内存寻址及数据处理的方式,发明了指针变量。每一个指针变量中,都保存一个内存地址。按照以上的类比,如果内存是小区,内存地址是门牌号码,那么指针更像是名片。

int main(int argc, char* argv[])
{
    int nValue = 100;
    int* pValue = &nValue;
    return 0;
}

原文地址:https://www.cnblogs.com/shellmad/p/11695591.html

时间: 2024-08-04 13:25:53

C零基础视频-32-指针铺垫知识:计算机分级结构的相关文章

C零基础视频-37-指针数组与数组指针

目录 指针数组 数组指针 指针数组 指针数组是数组,即一个数组中,每个元素都是指针. #include <stdio.h> int main(int argc, char* argv[]) { int nValue1 = 1; int nValue2 = 2; int nValue3 = 3; int * nArray[3] = { &nValue1, &nValue2, &nValue3 }; char* sz1 = "hello"; char*

C零基础视频-34-通过指针实现函数交换两个变量的值

目录 回顾:函数的值传递 使用指针交换两个变量的值 回顾:函数的值传递 因为函数的调用过程中,实参到形参是值传递,因此,改变形参,是无法影响到实参的: #include <stdio.h> void FakeSwap(int nArg1, int nArg2) { int nTemp = nArg1; nArg1 = nArg2; nArg2 = nTemp; } int main(int argc, char* argv[]) { int nValue1 = 100; int nValue2

C零基础视频-38-函数指针与typedef

目录 函数指针的定义 函数指针的复杂性 typedef 函数指针的定义 函数在内存中也是有地址的: #include <stdio.h> void fun() { printf("hello, world\r\n"); } int main(int argc, char* argv[]) { printf("%p\r\n", fun); return 0; } 既然有地址,就可以定义指针存储改地址,存储函数(首)地址的指针,称为函数指针. 函数指针的定义

C零基础视频-40-结构体指针

目录 结构体指针的定义 使用结构体指针引用结构体成员 结构体指针作为函数参数传递 结构体指针的定义 结构体指针的定义与基本数据结构的指针类似,使用"*"符号即可: #include <stdio.h> struct tagPetDog{ char szName[20]; char szColor[20]; char nWeight; }; int main(int argc, char* argv[]) { tagPetDog dog = { "旺财",

C零基础视频-35-指向同一个地址的指针的内涵

目录 C语言中的强制类型转换 指向同一个地址的指针 指针的两个内涵 C语言中的强制类型转换 C语言中运行将数据类型强制转换,使用(TYPE) 变量的方式即可. 比如,如下有警告: #include <stdio.h> int main(int argc, char* argv[]) { int nValue = 0; double fltValue = 3.14; nValue = fltValue; return 0; } 强制转换后没有警告: #include <stdio.h>

C零基础视频-45-内存的分区:全局区、栈区、堆

目录 为什么程序的内存有分区 程序运行时的内存分区 堆内存 不久的将来,我们要开始学习在C中动态申请和释放内存.在学习它们之前,我们先学习程序内存的分区,为掌握和理解动态申请.释放内存做好基础铺垫. 为什么程序的内存有分区 一般而言,我们的住房会分成多个区域(卧室.厨房.阳台.卫生间等),不同区域有不同的功能. 运行时,程序分区的道理也是一样的,它方便操作系统管理程序,内存的不同区域,功能不同. 程序运行时的内存分区 作为初学者,我们简单认识下,程序有全局区.栈区和堆区即可. 全局区:在main

C零基础视频-27-字符串

目录 什么是字符串 C语言中的字符串 字符数组与字符串的比较 什么是字符串 之前我们已经学过单个字符的文字型数据(char).同时了解过字符串. 在C语言中,字符串用双引号包围. #include <stdio.h> int main(int argc, char* argv[]) { printf("Hello"); return 0; } 字符串不是C语言中的基本数据类型.在我们之后的学习中可以看到,它是根据约定存储多个char数据的一种方式. C语言中的字符串 为了方

C零基础视频-47-C语言操作文件

目录 C语言文件操作函数 fopen:打开或创建文件 fopen中的mode参数 fclose:关闭文件 C语言文件操作函数 C标准库中提供了一系列的函数,来操作文件.因为C库函数做了这个中间层,屏蔽掉了操作系统上对于文件的不同处理. 关于文件的常见基本操作有: 打开文件:创建文件或打开文件载体(磁盘)中已有的文件 关闭文件:类似free,释放掉内存中与文件有关的动态资源 读取文件:数据由文件载体(磁盘)到内存 写入文件:数据由内存到文件载体(磁盘) fopen:打开或创建文件 fopen的原型

C零基础视频-36-指针相关的运算

目录 比较大小 指针的加减法 使用指针遍历数组 比较大小 同类型的指针是可以比较大小的,不同类型的指针不能比较大小: #include <stdio.h> int main(int argc, char* argv[]) { int nValue1 = 0; int nValue2 = 0; int* p1 = &nValue1; int* p2 = &nValue2; printf("p1: %p\r\n", p1); printf("p2: %