char 型別使用總結

2021-07-03 11:18:17 字數 1475 閱讀 3831

對於字元型別的指標真的有很多很多要注意的地方,而且他是string,cstring等各種字串相互轉換的橋梁。

使用上稍不注意就會出錯。

1.初始化

char* pstr = "hello world.";
這是乙個指向字串常量的指標,也就是說hello wrold.是不能被修改的。因為它儲存在程式記憶體中的常量區。很多時候不注意就把pstr當做引數傳遞了。

所以我們初始化需要改變的字串時應該使用:

char pstr = "hello world.";
此時的pstr也可以看做指標,hello world.是儲存在臨時堆疊上的,超過作用域後會自動銷毀。但是其中的字元是可以改變的。

2.可以這樣初始化:

char* pc = new char[20];

char* pc = ;

但是不可以這樣初始化:

char c = new char[20];

3. char p = "hello";和char p = ;二者是不一樣的。

4. 作為引數傳遞時的錯誤:

void hello(char* p)

//呼叫

char* pc = null;

hello(pc);

這樣呼叫是錯誤的,因為函式中的p只是pc的乙個拷貝,此時相當於傳遞的是指標變數。程式執行會報錯。

真確的做法是:

void hello(char** p)

char* pc = null;

hello(&pc);

傳遞指標的指標。或者指標的位址。

5. 作為返回值時的情況:

char* getchar()

返回值指向的棧記憶體指標,並且不是null。

6. 指標操作時的情況:

char* c = new char[20]; //或char c[20];

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

cout << c << endl;

此時並不能真確輸出c,因為c此時不再指向陣列的首位址了。

char* c = new char[20];

char* tc = c;

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

cout << c << endl;

7. 指標與陣列:

c[2]   ===   *(c+2)

c[2][3]  ===  *(*(c+2)+3)

最後,例子只是一種表述,實際程式設計還得變通。

char 與char 型別的區別

參考文章 char s 和 char s 的區別小結 char s1 hello char s2 hello 區別所在 char s1 的s1是指標變數,而指標是指向一塊記憶體區域,它指向的記憶體區域的大小可以隨時改變,但當指標指向常量字串時,它的內容是不可以被修改的,否則在執行時會報錯。char ...

CHAR型別和VARCHAR型別

char和varchar類似,僅僅是儲存和檢索方式不同。char型別和varchar型別宣告的長度表示你想要儲存的最大字元數。但是char型別的長度是不可變的,varchar型別的長度是可變的 定義乙個char 10 和varchar 10 如果存進去的是 abcd 那麼char所佔的長度依然為10...

char 型別 127 1 128問題

最近準備面試,發現應屆生考的比較多的就是基礎,我面向c c 則做到的筆試題也有很多相關的題,其中就有charl型別變數a 127 a 1 的問題,這裡記錄一下自己的理解 我們知道char型別儲存的值的範圍是 128 127,127為正數的最大,再進行加一就會產生溢位操作 計算機內部計算都是使用的二進...