C 函式傳陣列時要注意,需要顯式地傳入陣列長度

2021-09-10 08:41:09 字數 900 閱讀 5140

#include const int arsize = 8;

int sum_arr(int arr, int n);

int main()

; std::cout << cookies << " = array address, ";

std::cout << sizeof cookies << " = size of cookies\n";

int sum = sum_arr(cookies, arsize);

std::cout << "totsl cookies eaten: " << sum << std::endl;

return 0;

}int sum_arr(int arr, int n)

比如這裡,輸出結果為

0x7fffffffddc0 = array address, 32 = size of cookies

0x7fffffffddc0 = arr, 8 = sizeof arr

totsl cookies eaten: 255

這意味著,std::cout << sizeof arr << " = sizeof arr\n";這裡的arr實際上只是乙個指向陣列第乙個元素位址的指標。sizeof arr等於8意味著這個指標的大小為8位元組(對應64位作業系統)。而上面的std::cout << sizeof cookies << " = size of cookies\n";sizeof cookies指的是整個陣列大小為32。

所以,在編寫c++程式時,不能像python那樣,直接傳整個陣列,然後length(arr)(此時arr只是乙個指標,無法知道陣列大小),必須要顯式地指出陣列的長度。

C 使用localtime函式需要注意的地方

cpp include time t tmnow time null tm ptmnow localtime tmnow 從tm結構體中可以取到年月日時分秒等值。這裡localtime返回了乙個tm指標,空間是由localtime自己控制的,所以如果連續呼叫這個函式會有問題。很多時候我們會同時處理兩...

C 使用localtime函式需要注意的地方

cpp view plain copy include time t tmnow time null tm ptmnow localtime tmnow 從tm結構體中可以取到年月日時分秒等值。這裡localtime返回了乙個tm指標,空間是由localtime自己控制的,所以如果 連續呼叫這個函式...

C 使用localtime函式需要注意的地方

在處理時間時用到了localtime這個函式,將乙個utc時間轉為本地時間 cpp include time t tmnow time null tm ptmnow localtime tmnow 從tm結構體中可以取到年月日時分秒等值。這裡localtime返回了乙個tm指標,空間是由localt...