提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
在大一上学期,由于学校的通病,对于c语言的指针讲解过于简略,这里是我寒假重学指针的一些感悟,而内容基于 自己对 《c primer plus》 与《 c与指针 》的理解与感悟。
一、指针是什么?
指针就是地址。对于 无论是输出,还是输入,在内存中每一个数据 都会被计算机赋予一个地址。而计算机系统内部也有专门存放 地址的硬件。
其实通俗的说,就类似与,内存中的每个数据都对应着一个地址
其实,我们平时输入一段文字或玩一个游戏,其实是在内存中进行。好比在一个书房,存放书籍的书架和书柜相当于电脑的外存,我们工作的办公桌相当于内存。
通常,我们把要永久保存、大量数据存储在外存上,把一些临时或少量的数据和程序放在内存上。当然,内存的好坏会直接影响电脑的运行速度。
int a = 10;
int *p = &a;
int b = 1;
int *g= &b;
地址(p) 地址(g) 10 1 p和g就相当于是这两个数据的地址,也可称之为是指针指向这两个数据。
而值得注意的,我们都知道创建变量时,我们会用到关键字 char、 int、 float这些数据类型。而这些数据类型的最大不同便是占用的储存空间(这里一般是指内存)的大小不同。
而 我们通常也会看见 int *p,char *p;但这里要注意的是 指针大小是由当前CPU运行模式的寻址位数决定!这里如果想要深入了解的同学们,可以去搜索有关计算机基础的资料,上面详细记载了这些内容的补充。(这里就不过多叙述了),同学们可以 用sizeof函数去验证一下。
一般在32位计算机操作系统下,指针所占4个字节,在64位操作系统下,所占8个字节。
二、使用方法
1.如何使用指针
在这里我们必须认识两个操作符 & 取址操作符,* 取值操作符
int a=10;
int *p;// 一般来说 创建指针变量就需要赋予他地址,不要出现野指针,这是不好的习惯
p=&a;// 这样就完成了指针p的初始化 将p指向了a的地址。
*p=20;// 这个操作我们也称之为 解引用
printf("%d",a);// 通过取值 操作符 通关间接访问修改a里面的值
对于不同的数据类型,我们也得使用不同的指针类型进行操作。
指针类型 决定 解引用时能访问几个字节元素。//这点很重要 在后面的学习中一定要区分开。