指针增量和数组的关系,指针偏移的补充,(重要面试),gdp调试,将数组中的n个元素逆序存放
生活随笔
收集整理的這篇文章主要介紹了
指针增量和数组的关系,指针偏移的补充,(重要面试),gdp调试,将数组中的n个元素逆序存放
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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个元素逆序存放的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 指针,指针:分装一个函数,实现两个数的交
- 下一篇: 海尔电脑怎么改win7系统 海尔电脑如何