-
方法:1)為每個元素分配初始值。例如:
char a[12]=;
以這種方式初始化字元陣列不能包含結束標誌,這是合法的。 但是,當將陣列整體輸出時,系統無法判斷字串是否結束,輸出結果會有問題。 因此,它通常被人為地新增“0”。
上面的例子更合理地進行以下更改:
char a[13]=;
2)用字串常量初始化字元陣列:
char a="good morning";或。
char a=;
這樣初始化字元陣列,可以不指定陣列長度,但實際陣列的長度比字串常量的長度多 1,因為系統會在末尾新增字串結束標誌 '0'如果指定了陣列的長度,如果字串常量的長度大於陣列的長度,則會發生錯誤,如果小於陣列的長度,系統將填充所有未賦值的元素為“0”。
-
A是對的。 b 不為 true,只允許分配所有元素的陣列。
所以長度是 7,數字前導也是 7
-
char b=;
它的長度應為 7 A,否則 b[i] i 可以大於 6??
我應該從 0 到 6 並且在記憶體中是連續的。
-
a[2]=;當字元數正好等於元素數時,系統如何編譯?
-
正確答案:n+1
解析]在 C 中,字串以“0”結尾,因此如果字串長度為 n。 也就是說,有 n 個字元,所以加上“0”意味著有 n+1 個字元。
-
C 問題:如果乙個字串的長度為 n,則儲存該字串的字元陣列的長度至少為
char [3]=;n
-
n+1 如果使用小於此長度的儲存。 如果是初始賦值,它將報告錯誤,如果是使用 scanf 或 get 輸入的,則字串後面會有一些奇怪的字元,因為輸出時沒有 0。
-
n+1 字串以 0 結尾,因此如果字串長度為 n。
也就是說,有 n 個字元,所以加上“0”意味著有 n+1 個字元。
-
n+1。
字串都以 0 結尾,只有當遇到 0 時,他才會識別字串的結尾,所以它是 n,結束字元 0 總共有 n+1 個字元長度。
-
n+1,n 個字元,加上字串結尾標記“0”。
-
至少 n +1,後跟應為“0”
-
n+1,n 個字元加上末尾的 1 個'\0'
-
n+1,因為最後乙個 0 也佔 1。
-
請記住兩件事:
設定字串樣式。
每當使用雙引號(半形)時,它們都將以 0 結尾,這意味著將多乙個字元。
2.如果未指定陣列的大小,則陣列的預設大小將是賦值編號右側的初始化長度。
那麼你的問題的答案如下:
字串"abcd"長度為 4,因為字串長度是指字串中的有效字元數,並且不包含 C 樣式的結束字元 0 和字串陣列 a="abcd"長度為 5,因為這是陣列的長度,也就是它占用的儲存空間,當然它必須包含乙個 0 終止符(這也占用儲存空間)。 a[10]="abcd"為 10,因為您正在顯示指定字元陣列的長度。 當然占用的記憶體是10,它的儲存空間是連續的,也就是說在10個字元空間中,前面是a、b、c、d和結束字元0,後面都是0(初始化),總共有5個0,加上前面的ABCD和結束字元0,總共有10個, 它們的儲存是連續的。
a=,你沒有用雙引號定義它,所以它不是乙個 C 樣式的字串,它只是乙個字元陣列。 而且你沒有指定大小,那麼它的大小就等於你初始化的長度,這裡是4,sizeof也等於4,沒有結束字元0。 後乙個問題重複,沒有解釋!
-
#include “
然後你可以使用 int length=strlen(str)。
str 是你的字串。
-
您可以使用 strlen() 函式,但不同的編譯器可能會產生相同的結果。
-
你好。 它應該被理解為這樣理解。
首先,在 C 的情況下,字串實現通常使用陣列。 chars"hello";
hello 中有五個字元。 分別。 h
ELLO 在 C 語言中有一條規則,即包含字串的陣列應使用字串終止符終止。
即“0”
所以上面定義中陣列 s 的長度是字元總數的 5
新增結束字元“0”
那是 6 歲。
字串的長度為 5
但是陣列 s 的長度為 6
至於流行陣列的長度,應該是指數組中可以儲存的元素數。
例如,char
s[100]
hello";
雖然字串 s 的長度是 5
但陣列長度為 100
希望你理解。
-
字串的定義:以值 0 結尾的字元數,字串的長度是陣列中值 0 之前的字元數。
例如:字串"1234"陣列中的具體儲存如下所示:'1','2','3','4',0,由於 0 前面有 4 個字元,因此此字串的長度為 4,但它必須占用 5 個空格才能儲存。
所謂轉義符號是這樣的:C語言需要用一些符號來編寫程式,比如:printf("%d",x);這裡用雙引號表示"%d"這個字串,但如果我們需要輸出雙引號怎麼辦?
就用它吧"而不是寫作",例如,如果我們想輸出 ["abc"],你可以這樣寫:printf("[\"abc\"]");同理,如果我們想輸出 % 符號,也應該在字串中用 2 % 替換它,比如輸出 [100%] 可以寫成 x=100; printf("【%d%%】",x);
還有一些字元我們不能用鍵盤輸入,比如回車鍵,它是用替換的字串寫的,而鍵被替換成,我們只知道字元ASCII碼是43,八進位43可以寫成43,我們知道十六進製ASCII碼11是用x11寫的
這樣”。"1\432\x11\"“儲存時:'\"','1','\43','','2','\x11','\"',0 字串長度為 7,最外邊的一對雙引號不屬於儲存的字串,而是 C 語言標識字串的保留符號。
-
字串的長度以位元組為單位。
字串長度是根據字串計算得出的,並以字串終止符結尾,該終止符不計入字串長度。
一對單引號包含乙個長度為 1 位元組的“字元常量”。
以反斜槓開頭的字元稱為音譯轉義字元。
指示 1 個雙引號字元。
1 代表字元 1
43 means 是八進位數,043 是換行符(換行符或換行符)的 ASCII 字元,x11 means 是十六進製數的 ASCII 字元0x11
指示乙個單引號字元。
字串終止符是'\0'
什麼是“Escape”角色,為什麼要使用Escape角色等等,需要看書才能理解。
-
第乙個問題:長度的概念不是位元,長度是以位元組為單位的,乙個位元組是八位。
第二個問題:因為是轉義字,所以需要檢查轉義字才清楚,看看書上就知道了,書上有。
-
char s[10]="abc";實際占用為 10 個位元組,strlen 計算長度為 3,這是正確的。
char s="abc";實際占用為 4 個位元組,strlen 計算長度為 3,這是正確的。
char s[10]=;實際占用為 10 個位元組,strlen 計算長度為 3,這是正確的。
char s=;實際占用是 3 個位元組,strlen 計算長度是(隨機值),而不是 3,因為這只能說明 s 是包含三個元素的字元陣列,而第四個元素已經是非法空間了。
char s[3]="abc";編譯不起作用,因為"abc"它需要 4 個位元組,而 s[3] 只有 3 個位元組的空間。
char s[3]=;實際占用為 3 個位元組,strlen 計算長度為 (隨機值)。
-
有一些錯誤。
s[3]="abc";這個是編不出來的,越過邊界,就有乙個0沒有放在地上。
另外,我不知道你用這個函式做什麼,但如果你只是傳入 s 並使用 sizeof,結果一定是指標長度,並且在 32 位系統中的值是 4,所有這些,無論你定義多長和分配多少,如果你使用 strlen, 這和你的結果是一樣的。
-
以下是我的想法,僅供房東參考:
遍歷陣列, 統計'',從而為指向字串的指標陣列分配記憶體。
然後遍歷陣列,計算當前子字串的字元數,然後分配記憶體,複製。
-
正確答案:n+1
解析]在 C 中,字串以“0”結尾,因此如果字串長度為 n。 也就是說,有 n 個字元,所以加上“0”意味著有 n+1 個字元。
-
n+1 字串以 0 結尾,因此如果字串長度為 n。
也就是說,有 n 個字元,所以加上“0”意味著有 n+1 個字元。
-
n+1。
字串都以 0 結尾,只有當遇到 0 時,他才會識別字串的結尾,所以它是 n,結束字元 0 總共有 n+1 個字元長度。
-
n+1,n 個字元,加上字串結尾標記“0”。
-
他們談論的是一般情況,有一本書叫C++入門,你可以看看。
你可以使用 strlen 函式來獲取 C++ 中字元陣列的長度,例如計算字元陣列 a 長度的語句是 i=strlen(a)。 >>>More
必須明確的是,lz 引用的字串陣列是非常非規範的。 所謂"xx 陣列"就是這樣"以 xx 為元素的陣列",以便理解 LZ 的字串陣列的單詞"以字串為元素的陣列"應該理解的是,在C語言中只有儲存字元的變數,而沒有儲存字串的變數,即使儲存了,也只能儲存字串的第乙個位址,這種陣列稱為指標陣列,而不是字串陣列。 >>>More
string stra="abcdef";
string strb=""; >>>More