哪些网站可以做视频收费,爱网者,廊坊seo排名,手机网页开发工具那么这一篇文章带大家学习一下c语言的指针的概念、使用、以及一些注意事项。
指针的概念
指针也就是内存地址#xff0c;指针变量是用来存放内存地址的变量。就像其他变量或常量一样#xff0c;您必须在使用指针存储其他变量地址之前#xff0c;对其进行声明。
大白话讲解…那么这一篇文章带大家学习一下c语言的指针的概念、使用、以及一些注意事项。
指针的概念
指针也就是内存地址指针变量是用来存放内存地址的变量。就像其他变量或常量一样您必须在使用指针存储其他变量地址之前对其进行声明。
大白话讲解
外卖大家都点过吧在付款前app都会先让我们填写收货地址对吧这个指针呢就好比外卖员它必须要拥有你所在的地址信息然后才能将外卖送到你的手上。
即 int* e a;// e得到了a的地址
语法格式
类型* 地址变量名 eg.int* n;//指针的创建
可能太抽象别急后面我会举个例子让大家了解指针的使用
在此之前我们先来讲一下指针的运算
指针运算
指针运算一共有三种我已经给大家放在下面了 指针-整数
eg.*(p 1)
代码举例 # include stdio.h // 指针 - 整数 int main () { int arr[ 10 ] { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 }; int *p arr[ 0 ]; int i 0 ; int sz sizeof (arr)/ sizeof (arr[ 0 ]); for (i 0 ; isz; i) { printf ( %d , *(pi)); //pi 这⾥就是指针 整数 } return 0 ; } 指针-指针
代码举例 指针的关系运算
代码举例 // 指针的关系运算 # include stdio.h int main () { int arr[ 10 ] { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 }; int *p arr[ 0 ]; int i 0 ; int sz sizeof (arr)/ sizeof (arr[ 0 ]); while (parrsz) // 指针的⼤⼩⽐较 { printf ( %d , *p); p; } return 0 ; } 这里就快点带过了大家自行观看 关于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 指针名
作用
修饰指针
修饰规则 const如果放在*的左边 修饰的是指针指向的内容 保证 指针指向的内容不能通过指针来改变 。 但是指针变量本⾝的内容可变 。 const如果放在*的右边 修饰的是 指针变量本⾝ 保证了 指针变量的内容不能修改 但是 指针指 向的内容可以通过指针改变 。 总结 c左值不变c右名不变这里的左右以星号为准这里的名所指的对象名不变 这里给大家拓展了有点多了本来是打算直接告诉大家这个口诀以及简单解释口诀但是我突然感觉还是要让大家自己从这些代码中看到结果以及总结出适合自己的口诀如果有能力可以不参照我的总结 野指针的成因以及如何规避野指针 成因 解决方法 1.指针未初始化 1.初始化指针 eg. int* p NULL 2.指针越界访问 2.不超出访问范围 3.指针指向的空间释放 3.指针变量不再使⽤时及时置NULL指针使⽤之前检 查有效性 指针变量不再使⽤时及时置NULL指针 使⽤之前检查有效性 assert函数的作用 assert函数是一个库函数 作用声明指针不为空 头文件C语言 ----- #includeassert.h C ----- #includecassert 今天就先给大家讲到这里喜欢我的小伙伴可以给我点个赞哟