我對理解指針有點新,所以我希望有人可以檢查一下,以幫助我確定指針是如何工作的。我試圖簡化的指針是什麼概念,以及如何使用它們從函數傳遞指針到函數
functA(int *numb){
functB(numb);
}
functB(int *numb){
functC(numb);
}
functC(int *numb){
*numb+=1;
}
int main(){
int testNumber = 0;
functA(&testNumber);
.
.
.
}
因此,在主,我要送testNumber的地址本功能A.所以,當我這個地址發送給functA,沒有問題,對嗎?
由於函數A有一個指針參數,它可以容納一個地址,當我發送一個地址時它不會遇到問題,對吧?然後,由於麻木(在functA中)是一個指針,我可以將它發送給functB,因爲functB可以接受一個地址。另外,我仍然發送與testNumber相同的地址,對嗎?我發numb(從functB)到functC,在functC中,我取消了這個位置(有沒有更好的方法來說這個?),並將計數增加1.所以當這個完成時,testNumber應該是1,正確嗎?
我知道這可能聽起來很愚蠢,但我只是想從概念上把握這一點。我花了更多的時間,而不是我願意承認試圖在我剛剛提交的一個項目上做出這個概念(我做了它,但它花了太長時間)
似乎你的代碼改變'testNumber'指針的手段方式工作,並且'testNumber'的值應該是''functA(&testNumber)''後調用,如果你添加'; '在該行末尾 – VolAnd
指針對新C程序員來說總是很棘手。請記住,在*旁邊,它是價值,沒有它,就是地址。當你傳遞一個指向另一個函數的指針,並且你想傳遞_address_時,傳遞變量名而不用星號。接收函數的變量必須有一個星號。傳遞一個值時反之亦然(除非你希望接收函數也是一個指針)。這些規則也有例外,但是我非常懷疑你需要擔心它們,除非你重寫了memcpy或其他東西;) – Aurelius
@VolAnd啊謝謝你。我現在要修復 – Woff