這個問題在這里已經有了答案: 從指標 C 5 個答案中 獲取陣列的大小 8 天前關閉。
給定一個指向陣列第一個元素的指標,我怎樣才能得到陣列的大小?例如,如果給了我a但不是arr在這里:
int arr[]={1,2,3};
int* a=arr;
也有人可以解釋一下陣列中“\ 0”的屬性嗎?
- 我對“\0”的理解是它標志著陣列的結束。那是對的嗎?還有更多我應該注意的地方嗎?
- "\0" 適用于所有型別的陣列還是僅適用于 char 型別?如果它僅適用于 char 型別,那么其他型別的陣列是否有類似的符號?
- '\0' 會自動插入到陣列的末尾嗎?還是只有在某些特定條件下才會自動插入?
uj5u.com熱心網友回復:
鑒于:
int arr[]={1,2,3};
int* a=arr;
僅給出 的值,您無法獲得陣列的大小a。從int[3]to的隱式轉換int*是有損的;它丟棄有關陣列大小的任何資訊,并產生指向陣列初始元素的指標。
空字符'\0'標記 C 樣式字串(以空字符結尾的字串)的結尾,可用于確定字串的長度——而不是包含它的陣列的大小。
對于非字符型別的陣列,沒有這樣的約定。當然,您可以在自己的代碼中定義這樣的約定,但是如果0是有效的元素型別,您將遇到問題。
如果你需要做這種事情,你最好使用 C 的標準庫。例如,該型別std::vector<int>保存一系列int值并為您跟蹤其長度。如果您確實需要撰寫通過指向陣列元素的指標來處理陣列的 C 風格代碼,您需要自己跟蹤陣列長度。
字串文字確實會自動提供終止空字符,但同樣只適用于字串,而不適用于一般的陣列。
uj5u.com熱心網友回復:
我想知道給定一個指向陣列第一個元素的指標,我怎樣才能得到陣列的大小?例如。int arr[]={1,2,3};int* a=arr,給定a(not arr),如何得到陣列的大小?
您通常無法僅使用指標獲取大小。
1.我對“\0”的理解是它標志著陣列的結束,對嗎?
您可以選擇任何值來表示陣列的結尾。
"\0" 通常不用于表示陣列的結尾。
'\0' 即空字符通常用于表示字串的結尾。這樣的字串稱為“空終止字串”。
- "\0" 適用于所有型別的陣列還是僅適用于 char 型別?
"\0" 是一個字串文字。字串是字符陣列。字符陣列的元素不是字符陣列,而是一個字符。
- '\0' 會自動插入到陣列的末尾嗎?
不,'\0' 不會插入到陣列的末尾。并非所有陣列甚至都包含可以將 char 轉換為的型別的元素。但是,每個字串文字的末尾都有一個隱含的 '\0'。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/409920.html
標籤:
下一篇:Maven過濾包含/排除理解
