C 字串定義區別

2021-07-29 15:33:59 字數 806 閱讀 4748

#include #include using namespace std;

int main()

輸出結果:

2ea3c4

hello

hello

hello

12ff24

41a2e8

41a2e8

41a2e8

41a2cc

結論:char * q = "hello"; q為常量,存在靜態儲存區。

sting s = "hello"; string對==做了過載,與一切看上去相等的作比較,結果都為相等。

char p = "hello"; p為變數,存在棧區,與常量比較不相等**解釋1)。

p1和p2存的位址是相同的,都是常量"hello"在靜態儲存區中的位址。

存p1和存p2的位址不同。

解釋1:

q和"hello"比較的是位址,位址相同;

p和"hello"比較的是位址,位址不同。

另外:char *p = "hello" 和 const char *p = "hello" 等價,前者是c歷史遺留,應淘汰。

char *p 和char p都沒有操作符過載,各種符號(==,!=,<,>,<=,>=)比較都是對位址進行比較,相同的常量字串擁有相同的位址。

string 有操作符過載,各種符號(==,!=,<,>,<=,>=)比較的是位址中的內容。

char p1 = ; //不是字串

char p2 = ; //是字串

char p3 = "123";

C 字串常量和字串變數定義和區別

字串常量 定義 在乙個雙引號 內的字串行或者轉義字元序列稱為字串常量 例如 ha ha!abc n t 這些字串常量是不能改變的,如果試圖改變指標所指向的內容是錯誤的 因為字串常量是存在靜態記憶體區的,不可以改變的。如定義字串常量 char a i love you.a h 試圖改變它 這是錯誤的。...

redis 字串與 c字串的區別

c語言關於 字串 的說明 1,c語言中沒有 字串 的概念,實際上在c之中字串是長度為 n 1的字元陣列限制。2,c語言對於字串的操作是很麻煩的,因為c字串的長度與底層陣列的長度之間存在關聯性,所以每次增長或者縮短乙個字串,程式都要對儲存這個字串盡心一次記憶體重新分配。redis 字串實現是 sds ...

C字串長度定義規範

c字串長度定義規範 因為總是見到c字串長度相關的錯誤,所有定個規範出來,有利於減少錯誤.關鍵在於c字串有個結尾0,處理時需要注意.定義字串長度有兩種方式,一種是用字串的大小,一種是字串的長度.字串的大小即記憶體空間的大小,而串長度加1才是所需空間.正確 char str max size char ...