那么这一篇文章带大家学习一下c语言的指针的概念、使用、以及一些注意事项。
指针的概念
指针也就是内存地址,指针变量是用来存放内存地址的变量。就像其他变量或常量一样,您必须在使用指针存储其他变量地址之前,对其进行声明。
大白话讲解
外卖大家都点过吧,在付款前,app都会先让我们填写收货地址对吧,这个指针呢就好比外卖员,它必须要拥有你所在的地址信息,然后才能将外卖送到你的手上。
即 int* e = &a;// e得到了a的地址
语法格式
类型* 地址变量名 eg.int* n;//指针的创建
可能太抽象,别急后面我会举个例子让大家了解指针的使用
在此之前我们先来讲一下指针的运算
指针运算
指针运算一共有三种,我已经给大家放在下面了
指针+-整数
eg.*(p + 1)
代码举例:
指针-指针
代码举例:
指针的关系运算
代码举例:
关于const的介绍
首先我们先来看一段代码,相信看到这篇文章的大多是小白,所以我以文字的方式带大家将代码走一遍。
int main()
{
int a = 666;//创建变量,并赋值
int* p = &a;//取出a的地址,并存放在* p 中
printf("%d ", *p);//根据p提供的地址,将数据进行打印
return 0;
}
那么带大家走完后,就开始这一部分的内容了。
首先const是修饰指针的,至于它的作用我们一会儿再说,我们先再来看段代码
这是一段编译器已经报错了的代码, 我们可以从图片中看到如第485和第469行以及它的报错,从中我们可以发现*p的值无法修改,而484行的const在星号的左边,468行的const在类型和星号的左边。
那么我们再来看一段代码。
从图中我们可以发现,*p得到的是n的地址,但却输出的不是n的地址
那么从上面两张图中我们可以看到const所在位置不同,使得最后的结果也不同。
或许有小伙伴已经猜出const的大概作用了,那么我们还是来总结一下const的规则
const的规则
位置
以下用c表示const
c 类型* 指针名
类型 c * 指针名
类型 * c 指针名
作用
修饰指针
修饰规则
总结
这里给大家拓展了有点多了,本来是打算直接告诉大家这个口诀以及简单解释口诀,但是我突然感觉还是要让大家自己从这些代码中看到结果以及总结出适合自己的口诀(如果有能力可以不参照我的总结)
野指针的成因以及如何规避野指针
成因 解决方法
1.指针未初始化 1.初始化指针 eg. int* p = NULL
2.指针越界访问 2.不超出访问范围
3.指针指向的空间释放 3.指针变量不再使⽤时,及时置NULL,指针使⽤之前检 查,有效性 指针变量不再使⽤时,及时置NULL,指针 使⽤之前检查有效性
assert函数的作用
assert函数是一个库函数
作用:声明指针不为空
头文件:C语言 -----> #include<assert.h>
C++ -----> #include<cassert>
今天就先给大家讲到这里,喜欢我的小伙伴可以给我点个赞哟!