最近,我讀了代碼的打擊,這讓迷茫數組的大小和指針的大小是什麼意思?
static string const dirs[6] = {"-n", "-ne", "-se", "-s", "-sw", "-nw" };
int a = sizeof(dirs)/sizeof(*dirs);
而且遺囑等於陣列,這是6
的尺寸所以我的問題是:
sizeof(dirs)代表什麼?總陣列的大小是多少?
sizeof(* dirs)代表什麼?
最近,我讀了代碼的打擊,這讓迷茫數組的大小和指針的大小是什麼意思?
static string const dirs[6] = {"-n", "-ne", "-se", "-s", "-sw", "-nw" };
int a = sizeof(dirs)/sizeof(*dirs);
而且遺囑等於陣列,這是6
的尺寸所以我的問題是:
sizeof(dirs)代表什麼?總陣列的大小是多少?
sizeof(* dirs)代表什麼?
sizeof(dirs)
表示整個陣列sizeof(*dirs)
的大小代表了陣列的單個元件的尺寸因此,的sizeof(*顯示目錄)*元素的數目=的sizeof (dirs),因爲元素的數量*每個元素的大小=整個陣列的大小
因此,元素的數量= sizeof(dirs)/ sizeof(* dirs)。
「'sizeof(* dirs)'代表陣列單個元素的大小「 - 更確切地說,是第一個元素的大小。 – 2013-06-23 06:28:17
what does sizeof(dirs) represent? Is the size of the total array?
是的。
what does sizeof(*dirs) represent?
*dirs
是相同與dirs[0]
,所以sizeof(*dirs)
是第一要素的大小。 (以及每個元素的大小,因爲它們是相同的)
sizeof(dirs)/sizeof(*dirs)
將是數組中元素的數量。
sizeof
運算符產生提供的操作數的字節大小。 由於*dir
等於dir[0]
,因此sizeof(*dirs)
將以字節返回第一個數組元素的大小,否則sizeof(dirs)
將返回所有數組的字節大小。因此,當你分割這些數字時,你會得到數組中的元素數量。
更多關於sizeof
操作者:http://en.wikipedia.org/wiki/Sizeof http://en.cppreference.com/w/cpp/language/sizeof和http://msdn.microsoft.com/en-us/library/4s7x1k91(v=vs.110).aspx
當sizeof運算符應用於參考,彷彿的sizeof已經應用到對象本身的結果是相同的。
如果未經處理的數組是結構的最後一個元素,那麼sizeof運算符將返回沒有數組的結構的大小。
sizeof運算符常常用於計算使用所述形式的表達的數組中的元素的數量:在上述回答
sizeof array/sizeof array[0]
一個重要的例外是,如果顯示目錄被傳遞到功能可按, sizeof (*dirs)
仍然是數組中一個元素的大小,但sizeof dirs
現在將評估爲您環境中指針類型的大小。這是因爲傳入函數的數組在函數內部使用時只是一個指針。
至少第二個,[數組](http://stackoverflow.com/questions/4810664/how-do-i-use-arrays-in-c)。 – chris
你最喜歡的C++書籍中關於sizeof是什麼以及sizeof是幹什麼的? – AnT
如果你堅持用C++編寫數組,那麼這樣做的首選方式通常是這樣的:'template size_t arraylen(T(&)[N]){return N; }' –