1.地址
- 每个内存单元之间的地址是唯一的
- 在同一台机器上每个内存单元的地址是唯一的
- 每次运行程序,变量的地址不一定一样,这是由操作系统随机分配的
2.指针概念
- 概念:是一种类型,也是一个变量,存储变量的地址
- 注:定义指针的时候*挨着都可以,看个人喜好
- 赋值:
int* p;
int age=18;
p=&age;
printf("%d %p",*p,p);
- 指针作为一个变量是有大小的大小与指针类型无关
32为 4byte
64位 8byte
好处:
- 直接访问硬件
- 快速传输数据 -> 指针表示地址
- 返回一个以上得值,返回(数组或者结构体指针)
- 方便出来字符串
.万能指针
void指针 -> 万能指针 ——>不能解引用—–>需要接收
void指针可以自动转换为其他任意类型的指针,也可以从其他类型的指针转为void类型指针
4.指针的特殊状态
1.野指针
没有初始化的指针————->没有明确指向
2.空指针
如果指针现在不想指向任何内存,那么可以让他先指向NULL
int* p;
p=NULL;
3.悬空指针
原来指向的是有效的内存地址,但是现在内存已经释放了,再去访问的时候就不合法了
解决方法:超出作用域的时候,再把指针赋为空指针
5.const与指针
- 常量指针:指向常量的指针,也就是通过指针不能修改指向内存的值(值不可以修改)
int a=2;
const int* pa=&a;
int const* pa=&a;
//const放在*之前,则修饰*pa
//即const放在*之前,值不可以修改
- 指针常量:指针是常量,指针的指向不可以改变(地址不可以改变)
const放在*之后,地址不可以修改
6.指针的运算
- 每种类型的指针的步长不一样,所以+1得到的值也是不一样的(指针的偏移)
- 指针的关系运算符,一般使用== !=
7.大小端模式
0x12345678从左到右先是高字节,再是低字节
- 小端和大端从左到右都是先低地址,再高地址
- 小端模式是低地址存放低字节,高地址存放高字节
- 大端模式是低地址存放高字节,高地址存放低字节‘
- 现在的计算机一般都是小端模式
————————————————
版权声明:本文为CSDN博主「热爱编程的小K」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_72157449/article/details/128371156