C 字元陣列初始化和未初始化等系列問題分析

2021-10-23 04:16:30 字數 2359 閱讀 8094

1.字元陣列未初始化裡面元素值為多少

(1)字元陣列定義在main函式外面,s[i]的值為』\0』即為null(i=0,1,2,3…), (int)s[i]的值為0。

(2)字元陣列定義在main函式裡面,輸出結果表現為亂碼,(int)s[i]的值為隨機數。

2.字元陣列在部分初始化後,後面的元素自動賦值為』\0』

#include

using

namespace std;

int main ();

//char s[10]=;//三種初始化方式都一樣

for(

int i=

0; i<

10; i++

)return0;

}//輸出結果為:abcde00000

注意:

#include

using

namespace std;

intmain()

cout << endl;

for(

int i=

0; i<

10; i++

)return0;

}/*輸出結果:

第一行為亂碼

第二行前五個數為 abcde 的 ascii碼,其餘數為隨機數

3.字元陣列初始的值全部置為』\0』的辦法(即以%c讀取為null即空,以%d讀取為0)(1)記憶體操作庫函式memset

標頭檔案cstring中宣告:

void * memset(void * dest,int ch,int n);

將從dest開始的n個位元組,都設定成ch。返回值是dest。ch只有最低的位元組起作用。

例:將szname的前10個字元,都設定成』a』:

char szname[200] = 「」;

memset( szname,『a』,10);

cout << szname << endl;

=>aaaaaaaaaa

#include

#include

using

namespace std;

intmain()

return0;

}//輸出為 0000000000

(2)char s[10]=,從一開始就全部賦值為0

#include

using

namespace std;

intmain()

;for

(int i=

0; i<10;

++i)

return0;

}//輸出為 0000000000

這樣只要對字元陣列進行連續賦值,便很容易通過下列**遍歷輸出整個字元陣列,而不用管字元陣列的長度為多少:

#include

using

namespace std;

intmain()

return0;

}//輸出 cayde 6

參考:

感謝**!

字元陣列初始化

上週實習做fcitx輸入法時碰到乙個字元陣列的問題,因基礎的不紮實,導致經除錯了幾分鐘才發現問題所在。字元陣列初始化常見有兩種格式 char arr test 10 和char arr test 11 helloworld 為什麼是一樣的內容,兩個陣列的長度不一樣,乙個是10,乙個是11,因為預設在...

未初始化指標

今天碰到個未初始化指標的問題。大意如下 class a public b m pb class b blah,blah,blah void func a pa b pb new b 初始化pb.pa m pb pb std vector a aptrs apters.push back pa fun...

陣列 初始化 只含動態初始化 靜態初始化

首先j a中此處只講靜態初始化 動態初始化 靜態初始化就是提前在陣列中設定好了陣列內容,此內容不做改動,該多長已經在設定內容的時候已經決定 動態初始化就是僅限於new及確定陣列大小長度,裡面的陣列內容沒有,可自由進行填寫,也包含了靜態初始化的內容 示例 package 陣列 public class...