1. 程式人生 > >數組作為形參時的一個陷阱

數組作為形參時的一個陷阱

ali 方法 實參 i++ 對數 sci 數組長度 () c++

1.#include <iostream>
using namespace std;
//交換兩個值
void swap(int &a, int &b) {
    int  temp = 0;
    temp = a;
    a = b;
    b = temp;
}
//把數組中元素為奇數的放左邊,偶數放有右邊。
//此處引發了我對C++ primer中關於對數組作為形參時,函數的定義為什麽要用一個int值作為下標變量,如果時候別的方法計算數組長度會如何,我想到了sizeof
void arr(int a[],int n) { int begin = 0
; int end = n - 1;
//end=sizeof(a)/sizeof(a[0])-1; 錯誤:sizeof(a)/sizeof(a[0])的結果為1
while (begin<end) { while(a[begin] % 2 == 1 && begin < end) begin++; while(a[end] % 2 == 0 && begin < end) end--; swap(a[begin], a[end]); } }
int main() { int ar[8] = { 1,2,3,4,5,6,7,8 }; arr(ar,8); for (int i = 0; i != 8; i++) { cout << ar[i] << " "; } return 0; }

此例中,我曾試著在數組當形參的函數中使用sizeof來計算實參數組的大小。但是當數組作為形參的時候,其退化為一個指針,如果sizeof其數組名將計算的是一個指針的大小!

數組作為形參時的一個陷阱