-
swap(int *p1, int *p2);
傳入時必須傳入的指標;
您之前定義了兩個指標指標 1 和指標 2; 並且它分別指向 2 個變數,因此您可以直接傳遞它;
只要 if 條件為 true,則將交換指標指向的變數資料;
你也可以這樣寫。
fi(a < b) swap(&a, &b);
也沒關係;
-
void swap (int* p1,int* p2) 也是可能的,所以很容易理解。
-
form 引數也是乙個指標。
int *p1 和 int *p2 定義整數指標 p1 和 p2。
-
引數的型別和引數可以不同,但同時,它們可能會導致型別不匹配錯誤。
呼叫函式時,將引數的值傳遞給引數,系統首先將引數的值隱式轉換為引數的型別,然後將值賦值給引數。
引數和引數在數量、型別和順序上應嚴格一致,否則可能會出現型別不匹配錯誤。 變數或屬性型別不正確。 例如,除非整個字串可識別為整數,否則不能將具有整數值的變數分配給字串值。
盡可能在相容的資料型別之間分配值。 例如,可以將整數分配給 long,將 single 分配給 double。
-
表單引數和實數引數之間的差異。
引數出現在函式定義中,可以在整個函式中使用,但不能在函式外部使用。
引數出現在音調功能中,進入調製功能後無法使用引數。
表單和實際引數的功能是傳輸資料。 當呼叫函式時,調函式將實數引數的值傳遞給調製函式的形狀引數,從而將調函式的資料傳輸到調製函式。
1.引數變數僅在呼叫記憶體單元時分配記憶體單元,並且在呼叫結束時,分配的記憶體單元立即釋放。 因此,引數僅在函式內部有效。 函式呼叫完成後,鍵函式無法再使用。
2.引數可以是常量、變數、表示式、函式等,無論它們是什麼型別的量,在進行函式呼叫時都必須具有確定的值,以便將這些值傳遞給引數。 因此,應預先分配和輸入引數以獲得確定的值。
3.引數與引數在數量、型別、順序上應嚴格一致,否則會出現“型別不匹配”的錯誤。
4.函式呼叫中發生的資料傳輸是單向的。 也就是說,引數的值只能傳遞給引數,而引數的值不能反向傳遞給引數。 因此,在函式呼叫期間,引數的值會更改,但引數的值不會更改。
5.當引數和引數不是指標型別時,當函式執行時,引數和引數是不同的變數,它們位於記憶體中的不同位置,引數複製引數的內容,引數在函式末尾釋放,引數不更改。
但是,如果函式的引數是指標型別變數,則在呼叫函式的過程中,將引數的位址傳遞給函式,並且引數的位址也在函式體內部使用,即使用引數本身。 因此,在函式體內部,可以更改引數的值。
-
程式 1 可以實現 a 和 b 值的交換,但程式 2 不能。 要理解這一點,您需要了解以下幾點:
1.變數的作用範圍; 區域性變數(在程式 2 中為 void。
swap(a,b) 子程式中的變數 a、b、k 都是區域性變數,生命週期從呼叫該函式開始,函式執行後變數被登出。
2、函式引數的傳遞方式; 上面的兩個子例程通過傳遞值來傳遞引數---將引數的值複製到引數中。 但是,子程式中表單引數的操作不會影響實際引數。
3.指標變數的含義; 指標變數是指向變數位址(整形器、浮點、字元等)位址的變數。 也就是說,指標變數的值是變數的位址。
如下分析: 程式1:表單引數呼叫子程式後,通過值傳遞獲取引數的值,表單引數和引數都儲存了同一變數的位址,並且在子程式中,表單引數的操作是間接對指向變數的,而不是表單引數本身的值。 可以更改 a 和 b 的值。
程式2:在子例程中,所有操作都是對引數本身的值執行的,執行完成後,引數(區域性變數)被登出。
過程 2:
-
主要是功能。
voidswap(int
a, intb) 與。
voidswap(int
p1,int
p2)、前乙個函式:只是把引數傳遞給引數,不會返回(值被傳遞)後乙個函式:就是把引數的位址傳遞給引數,程式中的引數實際上操作引數的位址,所以位址下的值在程式中交換, 這也起到了交換的目的。
-
如果 hl 是指標,則:
定義時為 void
initlist(lnode
HL)應該這樣使用。
initlist(*hl);
請注意,上面的 * 並不表示指標,而是表示 hl 指向的內容。
定義時為 void
initlist(lnode
hl)應該以這種方式使用。
initlist(hl);
那麼你的引數hl在這裡必須是乙個指標引用或指標指標。
否則無效
initlist(lnode
hl) 報錯資訊(位址訪問無效) void
initlist(lnode
hl),HL 仍將為 null(傳遞值,不返回頭節點),從而導致記憶體洩漏。
-
標準 C 中沒有引用,只能使用指標引數。
C++ 引入了指標引數來降低指標靈活性的風險,因為指標引數不僅可以將對資料的引用傳遞到函式中,還可以更改函式內的指標,即在函式內部更改呼叫域的變數(而不僅僅是物件)。
與引用相比,指標具有以下特徵:
指標變數可以重複賦值或更改(不適用於引用,一旦賦值,就無法更改),指標變數可以為空(指標必須指向特定物件)。
如果你不使用這些特性,覺得它們很麻煩,並且對非純C沒問題(即你不需要支援其他C的超集,如Objective-C),那麼使用引用引數,如果需要,甚至可以新增const以獲得進一步的約束。
-
1)如果指標引數在函式中,只有右值,而不是左值,那麼引數的值不會改變。
2)如果指標引數是函式中的左值,並且新值等於舊值,則引數的值不會改變。
3)如果指標引數在函式中有乙個左值,並且分配的新值不等於舊值,則引數的值會更改。
4) 要恢復函式中的更新值,您需要使用指標引數。(這是必要條件,而不是充分條件。 )
您正在尋找錯誤的軟體版本。
在尋找軟體時,一定要知道自己的系統版本,比如Android或Android,並根據手機的系統版本查詢軟體,這樣你幾乎不會遇到不相容的問題。 >>>More