困擾我很久的字串和指標的問題

2021-04-19 03:28:10 字數 698 閱讀 2120

一直搞不明白直接被賦給指標的字串(p="hello")是以什麼形式儲存在記憶體中的,今天終於解決了

char *p; 

p=(char *)malloc(sizeof(p)*10); //p指向新開闢出來的記憶體區域

strcpy(p,"hello");    //在新開闢出的記憶體區域裡填充了字串"hello".

strcpy(p,"hello");的意思是把"hello"所在的內容拷貝到p所指向的記憶體空間

"hello"儲存在常量空間,p的值可以改變

改變p不影響"hello"

char *p; 

p=(char *)malloc(sizeof(p)*10);

p="hello";        //字串"hello"是放在程式的專門常量記憶體區域的(這塊區域是程式編譯時候就已經決定了)

p="hello";的意思是讓p指向"hello"

"hello"儲存在常量空間,p就指向了這塊區域,p的值不可變,因為"hello"不可更改

int *p;

p=(int *)malloc(sizeof(p));

*p=123456; //整形常量儲存在p新開闢出的記憶體區域

free(p);

這裡p的值可以更改,當p被free後123456消失

字串指標和字元陣列的詭異問題

背景 qt程式設計,datetimeedit是乙個qcombobox下拉列表控制項,從中讀取事件日期轉換為char 型別,eventlogmessage.shartdatetime是char 型別。這是最原始的實現方法 qdatetime dd ui datetimeedit datetime qs...

字串指標和字串陣列的區別

char p1 a string.和 char p2 another string.寫法的不同 p1指向的這個字串是個常量,不可改變 程式在編譯期間就為 a string.這個字串分配了固定的空間,它被儲存在全域性靜態區中.編譯器只是把指標p1的指向的位址賦為 a string.的首位址,並沒有為指...

字串陣列和字串指標的區別

在最早學c語言的時候,char 與char 是最讓我頭疼的幾個問題之一。字串陣列和字串指標是截然不同的兩個東西,如果不去在意它們之間的不同,而混合使用,可能會帶來很多麻煩。讓我們從這兩個東西建立的過程說起。當我們進行字串陣列的定義時 char str abc 其實我們做了兩件事 1.建立了乙個新的字...