可能重複:
How to find the sizeof(a pointer pointing to an array)
Sizeof array passed as parameter使用的sizeof()成員函數內
我有這樣的代碼:
class total {
public:
void display(int []);
};
void total::display(int *arr)
{
int len = sizeof(arr)/sizeof(int);
cout << len;
}
int main(void)
{
int arr[] = { 10, 0, 0, 4, 20 };
total A;
A.display(arr);
return 0;
}
輸出爲而我預計它是陣列的長度, 但是,如果我使用sizeof()
語句在main()
它顯示5. 那麼,爲什麼sizeof()在成員函數內不顯示正確的值?
http://c-faq.com/aryptr/aryparmsize.html – cnicutar
@Jatin首先,建議,忘記(原始)指針和數組。它們不再使用,因爲我們有shared_ptr和vector。那是二十一世紀。使用XXI世紀工具。其次,在你得到一個,因爲sizeof(arr)得到的ptr大小是4,而sizeof(int)給你4。4/4 == 1.祝你好運。 – smallB
@smallB,我不會同意你的建議。當已經清楚如何使用指針時,應該使用這些好工具。我毫不懷疑賈丁會走到那個階段。另外還有很多情況下,陣列的大小是固定的,等等。錘子是老式的,但它仍然是非常有用的工具。 –