1樓:
strlen函式並非用來求陣列長度,而是求字串中有效字元長度。
您的定義:a[3] = ,看上去是一個char型別陣列,但同時a也可以是一個字串,內容為"abc...",之所以後面省略,是因為您的字串沒有結尾符'\0',即這個字串在定義時未封閉。
這導致'c'後面的內容被strlen函式計入字串長度。
所以它在您的某一次執行時,結果是4
至於「如果我將陣列長度宣告為大於3的數(比如4),則得到的陣列長度為 3 !」,
這個更好理解。因為您定義了大於3的陣列,這導致'c'後面的空間被初始化成了'\0',於是字串在'c'處結尾了。所以strlen統計出了3個有效字元。
2樓:匿名使用者
因為你用strlen()函式去求一個字串的長度時,它會從陣列的首地址一直檢查到字串結束符'\0'位置才會返回字元的個數。而你定義的陣列是a[3],其後面的資料不一定是『\0',所以,你會得到一個隨機值(看何時碰到\0了)。
而你定義的陣列長度大於3時,你這樣a[3] = 定義陣列時,系統會自動將其它位上的資料置為'\0',因此,再strlen()函式就會得到正確的長度值了。它表示你的字串中有多少個有效的字元。
c語言陣列問題,C語言陣列問題
int main i for i 0 i 這個要問數學老師才知道。c語言陣列問題 你的 問題有以下幾個 1 min和max沒有初始化 2 對於a min 和a max 沒有做迴圈參考 如下 include main printf 最大數是 d,下標是 d,最小數是 d,下標是 d n a max m...
c語言陣列問題
從左至右圖 8位元組正確。b正確,選b 因為系統會給x陣列多分配一個單元儲存字串結束標誌 0 d,編譯出錯 因為陣列名是常指標,不能再賦值,a b 違反了這一規則。第8題 char str 8 因為有一個8,不管str裡面放什麼,系統都保證且僅僅分配給str變數8個位元組的儲存空間。故選8。第9題 ...
c語言陣列的下標,C語言陣列的下標
樓主你好。注意a是常量,不要被別人誤導了。實際上a是陣列名代表陣列的首地址 注意雖然陣列名和指標都代表地址,但是陣列名不是指標,指標是變數,這個a是常量,可以叫指標常量 而i實際上可以看做陣列中的元素距離陣列首地址的偏移量 距離 a i 就是取距離陣列首元素距離為i的陣列中元素的值,也就是a i 了...