首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C語言指針實現兩數交換:change_num 函數詳解

     編輯:關於C語言

C語言指針實現兩數交換:change_num 函數詳解

通過指針參數實現兩數值交換。核心:函數接收地址,通過解引用修改原變量。

代碼實現

#include <stdio.h>
#include <stdlib.h>

void swap(int *px, int *py) {
    int temp = *px;
    *px = *py;
    *py = temp;
}

int main() {
    int a, b;
    printf("輸入兩數:");
    scanf("%d %d", &a, &b);
    printf("交換前:a=%d, b=%d\n", a, b);
    swap(&a, &b);
    printf("交換後:a=%d, b=%d\n", a, b);
    system("pause");
    return 0;
}

關鍵點解析

環節代碼說明
函數聲明void swap(int *px, int *py)參數為指針類型
調用傳遞swap(&a, &b)取地址符 & 傳遞地址
函數內操作*px = *py解引用修改原變量值
值傳遞對比swap(a, b)只能修改副本,原值不變

內存圖解

調用前:          調用 swap(&a, &b) 後:
main:             swap:
a = 10 ────┐      px ────┐
b = 20 ────┼──>      │    │
           │      py ────┘
           ▼            ▼
         交換完成
a = 20, b = 10

常見錯誤

  • 忘記 &:swap(a, b) 傳值而非傳址
  • 參數類型錯:void swap(int x, int y) 無法修改原值
  • 函數內交換指針而非值:px = py 只改變局部指針指向

宏版本交換(類型通用)

#define SWAP(type, a, b) do { type t = a; a = b; b = t; } while(0)

SWAP(int, a, b);  // 展開為安全的語句塊
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved