c语言指针系列

1、指针的概念

-----、存储器:存储数据器件

-----、外存:又叫外部存储器,长期存储数据,掉电不丢失数据

常见的外存设备:硬盘、flash、rom、光盘、U盘、磁盘

-----、内存:又叫内部存储器,暂时存储数据,掉电即丢失

常见的内存设备:ram,DDR

-----、物理内存:实实在在存在的存储设备(内存条)

-----、虚拟内存:操作系统虚拟出来的内存(虚拟内存就是我们所说的指针,因为直接操作物理内存很危险)

32位平台,每一个进程拥有4G的空间

因为32位操作系统的地址空间为32位,地址总数为232,每个地址对应1Byte内存空间,这样,32位操作系统管理的最大内存空间限制为232Byte=410241024*1024Byte,即4GB。
另外,补充一点,1Byte=8bit,即每个地址在内存上对应8位,这就是C++程序中最小的变量char 型变量大小为1Byte的由来。

-----、 系统为内存的每一个字节分配一个32位的地址编号(所以地址编号就是指针)

c语言指针系列_第1张图片
c语言指针系列_第2张图片

2、指针和指针变量的关系

指针:就是内存的地址编号
指针变量:还是变量,只是该变量保存的是内存的地址编号(不是普通的变量)
c语言指针系列_第3张图片

3、指针变量的定义

*修饰指针p,即为 (*p)
保存谁的地址,你先定义谁
从上往下整体替换

定义一个指针变量p,保存 int num 的地址编号
*p;
int num; //使用*p代替 变量 num
int *p;
定义一个指针变量p,保存 int arr[5]的首地址
*p;
int arr[5];
int (*p)[5];
定义一个指针变量p,保存函数 int fun(int,int)的入口地址
*p;
int fun(int,int);
int (*p)(int,int);
定义指针变量p,保存结构体变量的地址 struct stu luck;
*p;
struct stu luck;
struct stu *p;
定义一个指针变量p,保存指针 int *p的地址
*p;
int *p;
int *(*p);

4、指针变量的详解

32位平台定义的任何类型指针变量都是 4 B
64位平台定义的任何类型指针变量都是 4 B
在定义的时候*仅是修饰 p 为指针变量,并没有其他任何实际的意义
c语言指针系列_第4张图片
c语言指针系列_第5张图片

5、

你可能感兴趣的:(嵌入式开发学习,c语言,c++,开发语言)