终于学到指针了!!!
当然这个也是最难的部分,可能我分享的不是那么的仔细和完美,但是我会分享我会尽量增加这个板块的理解!话不多说开始吧
指针
基本用法和概念
在计算机的内存中每一个内存的字节单元都会有一个编号,我们称它为地址指向地址的这个量就叫做指针,所以一般来说我们会把指针说成地址,他俩可以说是等价的
指针变量
一般形式 char *p;
指针的存储类型是指指针变量本身的存储类型,指针说明时指定的数据类型不是指针变量本身的数据类型,而是指针目标的数据类型,所以我们简称它为指针的数据类型。
比如我们这个指针指向的是一个整型,那么这个指针的数据类型它也是一个整型。
我们指针也是可以初始化,一般就是把一个数据的地址赋值给这个指针变量
例如 int a,*pa=&a;
int a=1;
在这里中我们需要知道程序中不同的表示方法的不同意义
这里写一个简单的形式来供大家理解
指针的运算
指针的运算是以指针变量存放的地址量作为运算量而进行的计算,它的实质就是地址的计算,指针运算只能进行三类运算分别是赋值运算,算术运算和关系运算。
指针的算数运算不是地址的变化而是对地址所指向的数据的变化,其他的计算规则和基本的算术运算都一致
指针的算术运算必须得保证是同一数据类型的计算,否则这个算术运算是没有意义的
具体的运算规则可以看下表,需要牢牢记住!!!
指针赋值运算
指针算术运算
相减
指针相加减进行的数据移动
NULL指针,简单了解一下即可
指针与数组
在C语言中数组的指针是指数组在内存中的起始地址,数组元素的地址是指数组元素在内存中的起始地址。
一维数组的数组名为一维数组的指针(起始地址)
需了解一些数组指针的知识,见下图
代码如下
指针与二维数组
在本质上二维数组可以看成由多个一维数组组成,而它对应的指针的一些规则也是完全相同的
在这里需要提出一个行指针的概念,也就是数组指针每一行的指针就是那一行首元素的指针,存储地址的指针变量叫做行指针变量
当使用行指针操作二维数组时表达式一般写成一行的元素个数及列数
利用指针对指针进行操作从而实现数据的逆序输出
一些便于理解指针,指针变量,地址的代码
字符指针和字符串
在C语言中我们通过使用字符的数组来操作相关的字符串
通常我们把char类型的指针变量称为字符指针变量字符
它被用来处理字符串初始化字符指针是把内存中字符串的首地址赋予指针,并不是把字符串复制到指针中。指针是地址量,不能够被赋予具体的值
字符指针不能够通过改变指针从而改变指针所指向对象的值
字符串存储在静态存储区是不可以被改变的,所以不能够对字符串进行复制移动输入输出等操作
通过指针操作实现对字符串的连接
下面输出是一个乱码是因为编译器导致的问题,代码本身是没有任何问题的!!
对指针的分享就暂时到这儿吧,后期我会向大家展示更多的一些程序帮助大家更好的理解
如果喜欢的话给我点个关注,点个赞哦!