目录
一、指针的概念
二、指针的四要素
三、指针与指针变量
四、指针的类型
五、指针运算
1、取地址运算符&
2、间接运算符*
3、指针设声明
六、指针的作用
七、参考
一、指针的概念
为了方便访问内存中的内容, 我们给每个内存单元一个编号,这个编号称为地址即指针.
- 指针具有指向性,存放其他变量的内存地址。
- 指针就是地址,地址就是指针。本质是操作受限的非负整数
- 指针是一种数据类型, 所以指针都有自己的内存,存储的是地址(编号).
- 指针是一个变量,用来存放地址的变量,有类型的区分。
- 系统(32位或64位)中所有指针大小都是一样的
- 指针和指针变量是两个不同的概念
- 指针就是有指向的变量
- 二级指针指向的是存放同类型一级指针的空间,
- 多级类推二级指向一级一样指向它的前一级指针存放空间
二、指针的四要素
- 指针本身的类型 除去指针名,剩下的就是指针本身的类型
- 指针指向的类型 除去指针名和一个*,剩下的就是指针指向的类型
- 指针本身的内存用来存储一个编号(32位系统占4个字节,64位系统占8个字节)
- 指针指向的内存 可以是各种类型,指向起始地址
三、指针与指针变量
- 指针和指针变量是两个不同的概念,但要注意的是,通常我们叙述时会把指针变量简称为指针。
- 指针就是地址,地址就是指针,它是一个形无符号整型,一个整数,它的大小取决于系统是16 32 还是64位的 16/8=2byte 32/8=4byte 64/8=8byte.
- 指针变量其实是一个变量,只不过其存放的内容为地址,如 int* p,这个p是指针类型,它的值存的是地址。
-
指针引用后得到的是该地址所对应的变量的值。
-
二级指针是指向一级指针地址的指针
1、p是一个指针变量的名字,表示此指针变量指向的内存地址,如果使用%p来输出的话,它将是一个16进制数
2、*p表示此指针指向的内存地址中存放的内容,一般是一个和指针类型一致的变量或者常量。
3、 &是取地址运算符,&p就是取指针p的地址。
&p它到底和p有什么区别?
p和&p区别在于指针p同时也是个变量,既然是变量,编译器肯定要为其分配内存地址,无论是普通的变量还是指针变量在内存中都有一个地址 ,就像程序中定义了一个int型的变量i,编译器要为其分配一块内存空间一 样。
&p表示编译器为变量p分配的内存地址,而p是一个指针变量,这种特殊的身份注定了它要指向另外一个内存地址,程序员按照程序的需要让它指向一个内存地址,这个它指向的内存地址就用p表示。而且,p指向的地址中的内容就用*p表示
四、指针的类型
- 基本类型:int 、short、long、float 、double、char,如 int *p;//表示定义一个指针,这个指针指向整形变量,这个指针将存放的是整形变量的地址。
- 数组指针:**指针指向一个数组,int (*a)[10]; //表示指针指向一个int型的长度为10的数组
- 函数指针:**指针指向一个函数,void (*a)();//表示指针指向一个无参数无返回值的函数
五、指针运算
1、取地址运算符&
- 格式:&变量名
- 含义:取出存放变量的地址
- 用途:跨函数传递变量值(新手可暂时不用理会)
2、间接运算符*
- 格式:*指针名/地址名
- 含义:取出存储在地址中的对应值
3、指针设声明
*注 包含一个&和一个*,两者为互逆运算。&获取变量的内存地址,*获取指针所指向变量的内容。
六、指针的作用
C语言中使用指针可以:
- 方便地使用字符串
- 有效地表示复杂的数据结构
- 动态分配内存
- 得到多于一个的函数返回值
七、参考
- c语言指针知识点总结
- C语言知识:数组和指针
- C语言指针知识点总结 - 爱码网
- 辛伯达岛的博客-CSDN博客_c语言指针知识点总结