char陣列的賦值操作 動態儲存建立刪除

2021-08-13 03:49:03 字數 1038 閱讀 1878

一.字元陣列的賦值問題

1.對單個元素進行賦值 

char s[5];

s[0]='g'; s[1]='o'; s[2]='o'; s[3]='d';

ps:當檢查到'\0'時,就認為乙個字串結束了。

2.用串常量初始化。

char s[5]="good"; //正確

char s[4]="good"; //錯誤,陣列溢位。

ps:'\0'不算入字串長度,但占用位元組。

3.賦值輸出。

(1)將s[4]賦為』y『,正常輸出goody。

(2)將s[5]賦為'y',只輸出good。這是為什麼呢?

原來在賦完初值'good'後,s[4]處為'\0',當再次檢查到s[4]時,編譯器就認為字串已經結束,就不再輸出s[5]處的'y'了。

ps:可知,將乙個字元陣列賦為空可為s[0]='\0';。

二.動態陣列的建立與刪除

(1)一維動態陣列

int *p=new int[10]; //建立乙個長度為10的動態陣列。

delete p; //釋放p所指的儲存空間。

(2)多維動態陣列(例如3維)

int ***p=new int**[3]; //建立第一維。

for (int i=0;i<3;i++) p[i]=new int *[3]; //建立第二維。

for (int i=0;i<3;i++)

for (int j=0;j<3;j++) p[i][j]=new int[10]; //建立第三維。

delete p; //釋放。

Char陣列的賦值

1 定義的時候直接用字串賦值 char a 10 hello sizeof a 為10 或char a hello sizeof a 為6 注意 不能先定義再給它賦值,如char a 10 a 10 hello 這樣是錯誤的!2 對陣列中字元逐個賦值 char a 10 sizeof a 為10 或...

用Qstring給char 陣列賦值

tree data.desc desc是char 80 型別的資料 qstring newdescstr strcpy tree data.desc newdescstr.tolocal8bit data 注意 tolocal8bit 為了讓qstring變成qbytearray,也為了漢字本地化處...

char 的賦值問題

在實際程式設計過程中常會用到char 型別來表達字串,而此時如果使用動態分配的方式並且在賦值時沒有使用strcpy函式而是直接使用 則在釋放該指標空間時會產生堆溢位錯誤,造成該問題產生的原因大家都明白只是沒注意。所以在此時char 賦值建議使用拷貝函式來處理,例項 char mtype 0 mtyp...