char 與char 型別的區別

2021-07-24 11:42:29 字數 849 閱讀 8426

參考文章:char *s 和 char s 的區別小結

char *s1 = "hello";

char s2 = "hello";

【區別所在】

char *s1 的s1是指標變數,而指標是指向一塊記憶體區域,它指向的記憶體區域的大小可以隨時改變,但當指標指向常量字串時,它的內容是不可以被修改的,否則在執行時會報錯。

char s2的s2 是陣列對應著一塊記憶體區域,其位址和容量在生命期裡不會改變,只有陣列的內容可以改變

【記憶體模型】

+-----+     +---+---+---+---+---+---+

s1: |  ******=> | h | e | l | l | o |\0 |

+-----+     +---+---+---+---+---+---+

+---+---+---+---+---+---+

s2: | h | e | l | l | o |\0 |

+---+---+---+---+---+---+

示例**:

#include int main()

執行結果如下:

注:字串比較不能使用等於號,只能使用strcmp函式;相同則返回0,反之返回非零值。

#include#includeusing namespace std;

char str[20] = ;

char *pstr;

int main()

char 與char 的區別

乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 1 棧區 stack 由編譯器自動分配釋放,存放函式的引數值,區域性變數的值等。其操作方式類似於 資料結構中的棧。2 堆區 heap 一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os 注意它與資料 結構中的堆是兩回事,分配方式倒...

char 與 char 的區別

hello world 作為靜態字串實際上儲存在資料區,但寫程式的人不知道這個位址,而程式本身知道。當某一函式以 方式使用此靜態字串時,實際上相當於 char p 12 strcpy p,hello world p 12 是在棧裡臨時分配的。雖然p指向的內容是 hello world 但是這是複製品...

關於char 與char 的區別

char a在執行時賦值,值會從靜態區賦值到函式的棧中,對它進行修改不會產生任何問題。char a在編譯時就確定了,a指向靜態區中的值,沒有賦值到函式棧中,因此對指標的內容進行修改會產生錯誤。和許多文章一樣,還是先來了解一下 乙個由 c c 編譯的程式占用的記憶體分為以下幾個部分 1 棧區 stac...