指针增量和数组的关系,指针偏移的补充,(重要面试),gdp调试,将数组中的n个元素逆序存放
生活随笔
收集整理的這篇文章主要介紹了
指针增量和数组的关系,指针偏移的补充,(重要面试),gdp调试,将数组中的n个元素逆序存放
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1、指針增量和數(shù)組的關(guān)系
//加1? 代表了地址偏移了一個(gè)類(lèi)型的字節(jié)數(shù)(整形數(shù)偏移四個(gè)字節(jié),char形數(shù)偏移了一個(gè)字節(jié))
?
再來(lái)下標(biāo)法:
2、指針偏移的補(bǔ)充
?
也可以換一種寫(xiě)法(第12行)
但是呢同樣的代碼再來(lái)一次就會(huì)造成數(shù)組的越界
如何改正呢?重新讓指針回到數(shù)組的首元素
?
3、見(jiàn)怪不怪:指針當(dāng)成數(shù)組名,下標(biāo)法訪問(wèn)
完全可以通過(guò)下標(biāo)法,把3訪問(wèn)出來(lái)
//可以把它當(dāng)成一個(gè)數(shù)組名來(lái)用
?
可以通過(guò)下標(biāo)法,把數(shù)組訪問(wèn)出來(lái)
?
4、見(jiàn)怪不怪:數(shù)組名拿來(lái)加
?
也可以用arr
?
?
5、數(shù)組名和指針的區(qū)別
a++可行否?
?
如果把22行做一下改變
//第五行是指針常量,第六行是指針變量
(第22行指針常量,編譯不過(guò))
指針常量不允許++;
指針變量可以++;不過(guò)+完之后要往回走
?
?這就不行了
因?yàn)樯婕暗?#xff1a;常量指針? 和指針變量
p 是一個(gè)指針變量,變量什么意思?它是一個(gè)保存地址的變量,它保存的地址是可改的
arr 是一個(gè)常變量,1,2,3在內(nèi)存空間,地址定了就是定了,數(shù)組名代表那段空間的開(kāi)頭位置,不能把數(shù)組名拿來(lái)加,加到后面的位置
sizeof可行否?
//根據(jù)9,11,12行知道,只要是個(gè)指針就是八個(gè)字節(jié)
?
6、函數(shù)封裝數(shù)組初始化,遍歷
首先先試試gdb
?錯(cuò)誤在第八行應(yīng)該改成scanf("%d",&arr[i])
不過(guò)呢? 我們可以用gdp 調(diào)試
調(diào)試方式:在編譯的時(shí)候加上一個(gè)-g選項(xiàng),加上-g選項(xiàng)可以讓編譯出來(lái)的程序可調(diào)式
?gdb就是用來(lái)調(diào)試程序的
?然后按一下r? 進(jìn)入程序的帶運(yùn)行狀態(tài)
就可以知道錯(cuò)在哪了。
(Segmentation fault,經(jīng)常被縮寫(xiě)成segfault,又譯為儲(chǔ)存器段錯(cuò)誤,也稱(chēng)訪問(wèn)權(quán)限沖突)
退出的話 ,按一下q
然后再按一下y
?//實(shí)際參數(shù),數(shù)組的首地址 :名,首個(gè)元素的地址
?
為了好看可以再改一下
?(注意第8行和第17行的區(qū)別)
可是這里為什么不需要像之前一樣初始化呢?(下面第17行)
遍歷一個(gè)數(shù)組,再后面接著遍歷這個(gè)數(shù)組的時(shí)候,需要把p 指向數(shù)組的首元素
因?yàn)樗莾蓚€(gè)函數(shù),內(nèi)存空間不同,雖然都叫parr
每次函數(shù)調(diào)用,都在對(duì)形參賦初值
運(yùn)行結(jié)果
也可以改成
7、將數(shù)組中的n個(gè)元素逆序存放
?
然后再做些改動(dòng),修改的更指針一點(diǎn)
總結(jié)
以上是生活随笔為你收集整理的指针增量和数组的关系,指针偏移的补充,(重要面试),gdp调试,将数组中的n个元素逆序存放的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 指针,指针:分装一个函数,实现两个数的交
- 下一篇: 海尔电脑怎么改win7系统 海尔电脑如何