这是我参与11月更文挑战的第20天,活动详情查看:2021最后一次更文挑战」
最近,想复习一下C语言,所以笔者将会在掘金每天更新一篇关于C语言的文章! 各位初学C语言的大一新生,以及想要复习C语言/C++知识的不要错过哦! 夯实基础,慢下来就是快!
指针是什么
在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。
内存
指针
指针是个变量,存放内存单元的地址(编号)。
1 | arduino复制代码#include <stdio.h> |
总结:
- 指针就是变量,用来存放地址的变量。(存放在指针中的值都被当成地址处理)。
- 在32位的机器上,地址是32个0或者1组成二进制序列,那地址就得用4个字节的空间来存储,所以一个指针变量的大小就应该是4个字节。
- 在64位机器上,如果有64个地址线,那一个指针变量的大小是8个字节,才能存放一个地址。
指针是用来存放地址的,地址是唯一标示一块地址空间的。
指针的大小在32位平台是4个字节,在64位平台是8个字节
寄存器
寄存器集成到CPU上
种类:
1 | c复制代码eax |
4.指针类型的意义
一.指针类型决定了指针解引用操作的时候,一次访问几个字节
(访问内存的大小)
1 | c复制代码int main() |
二.指针类型决定了指针+-整数的步长(指针+-整数跳过几个字节)
1 | c复制代码int main() |

整形指针+1:跳过4个字节
字符指针+1:跳过1个字节
指针+1跳过的字节数取决于指针指向的变量的类型
三.指针-指针得到的数字的绝对值是指针和指针之间元素的个数
例如:
1 | c复制代码int main() |
指针-指针的前提是两个指针指向的是同一块区域
如:&arr[9] - &ch[0] err
image.png
利用指针-指针求字符串长度(模拟strlen)
1 | c复制代码//法1:计数器 |
指针-指针的标准规则
1 | c复制代码允许指向数组元素的指针与指向数组最后一个元素后面的那个内存位置的指针比较,但是不允许与指向第一个元素之前的那个内存位置的指针进行比较 |
p3:指向数组第一个元素前面的位置
p2:指向数组最后一个元素后面的位置
p1:指向数组元素的指针
今天就先到这吧~感谢你能看到这里!希望对你有所帮助!欢迎老铁们点个关注订阅这个专题! 同时欢迎大佬们批评指正!
本文转载自: 掘金