我是靠谱客的博主 精明故事,最近开发中收集的这篇文章主要介绍指针增量和数组的关系,指针偏移的补充,(重要面试),gdp调试,将数组中的n个元素逆序存放3、见怪不怪:指针当成数组名,下标法访问,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
1、指针增量和数组的关系
//加1 代表了地址偏移了一个类型的字节数(整形数偏移四个字节,char形数偏移了一个字节)
再来下标法:
2、指针偏移的补充
也可以换一种写法(第12行)
但是呢同样的代码再来一次就会造成数组的越界
如何改正呢?重新让指针回到数组的首元素
3、见怪不怪:指针当成数组名,下标法访问
完全可以通过下标法,把3访问出来
//可以把它当成一个数组名来用
可以通过下标法,把数组访问出来
4、见怪不怪:数组名拿来加
也可以用arr
5、数组名和指针的区别
a++可行否?
如果把22行做一下改变
//第五行是指针常量,第六行是指针变量
(第22行指针常量,编译不过)
指针常量不允许++;
指针变量可以++;不过+完之后要往回走
这就不行了
因为涉及到:常量指针 和指针变量
p 是一个指针变量,变量什么意思?它是一个保存地址的变量,它保存的地址是可改的
arr 是一个常变量,1,2,3在内存空间,地址定了就是定了,数组名代表那段空间的开头位置,不能把数组名拿来加,加到后面的位置
sizeof可行否?
//根据9,11,12行知道,只要是个指针就是八个字节
6、函数封装数组初始化,遍历
首先先试试gdb
错误在第八行应该改成scanf("%d",&arr[i])
不过呢 我们可以用gdp 调试
调试方式:在编译的时候加上一个-g选项,加上-g选项可以让编译出来的程序可调式
gdb就是用来调试程序的
然后按一下r 进入程序的带运行状态
就可以知道错在哪了。
(Segmentation fault,经常被缩写成segfault,又译为储存器段错误,也称访问权限冲突)
退出的话 ,按一下q
然后再按一下y
//实际参数,数组的首地址 :名,首个元素的地址
为了好看可以再改一下
(注意第8行和第17行的区别)
可是这里为什么不需要像之前一样初始化呢?(下面第17行)
遍历一个数组,再后面接着遍历这个数组的时候,需要把p 指向数组的首元素
因为他是两个函数,内存空间不同,虽然都叫parr
每次函数调用,都在对形参赋初值
运行结果
也可以改成
7、将数组中的n个元素逆序存放
然后再做些改动,修改的更指针一点
最后
以上就是精明故事为你收集整理的指针增量和数组的关系,指针偏移的补充,(重要面试),gdp调试,将数组中的n个元素逆序存放3、见怪不怪:指针当成数组名,下标法访问的全部内容,希望文章能够帮你解决指针增量和数组的关系,指针偏移的补充,(重要面试),gdp调试,将数组中的n个元素逆序存放3、见怪不怪:指针当成数组名,下标法访问所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复