C 語言函數參數採用值傳遞。實參的值被複製給形參,函數內修改形參不影響實參。
void swap(int a, int b) { int t=a; a=b; b=t; }
int main() { int x=3, y=5; swap(x,y); // x,y 不變 }
傳遞變量地址,函數內通過解引用修改原內存:
void swap(int* a, int* b) { int t=*a; *a=*b; *b=t; }
int main() { int x=3, y=5; swap(&x, &y); // x=5, y=3 }
int arr[] 或 int* arr 等價。sizeof(arr) 返回指針大小(通常 4/8 字節)。void printArr(int arr[], int len) {
for (int i=0; i
多維數組參數
二維數組傳遞時需指定除第一維外的所有維度大小,或使用指針數組:
void func(int a[][10], int rows); // 編譯時需知列數
void func2(int** a, int rows, int cols); // 動態分配的指針數組
總結表
實參類型 形參接收 函數內修改影響實參? 備註
基本類型變量 同類型變量 否 值拷貝
指針變量 同類型指針 指針本身否,所指內存是 傳地址
一維數組 int[] / int* 是(元素) 退化為指針,長度丟失
結構體變量 結構體變量 否 整體拷貝,大結構體建議傳指針