C 語言中的文字常量區

2021-08-25 21:39:32 字數 444 閱讀 5077

程式設計過程中,遇到這樣乙個問題,於是求教別人,自己又查閱了一些資料。先總結一下。

問題:

如果改為:

則執行正確,百思不得其解後,通過一上午的查閱資料,終於找到答案。

我做了乙個測試程式,截了乙個圖,答案都在下面:

答案已經全部在圖上。

總結:

1. char * p = "hello";//是在編譯時就要確定字串的內容。

char q = "hello";//在執行時確定字串的內容

其中,p存放的是字串的位址,q存放的是字串本身。所以p已經初始化之後,就不能修改。

就速度而言,顯然第二種方式比第一種快。

2.c語言程式記憶體分配,有下列幾個區:

像char * p = "hello"; 這種方式定義的字串就是放在文字常量區的。所以定義後是不能修改的。

**

c語言中常量區的問題

在群裡有人問了這麼個問題,下面這段程式執行會報錯 int main 看了一眼沒發現問題,自己執行了下,果然報錯,明顯是那種指標型別的錯誤 簡單除錯了下發現問題出在strcat這裡,難道是函式使用不對?確認下沒有問題 群裡有人提示說可能是字元常量的問題,馬上意識到應該就是這問題了,想起曾經琢磨過的記憶...

C語言中字串定義與文字常量區

c語言的記憶體組織方式 1 區,存放可執行 2 全域性儲存區,存放所有全域性變數和靜態變數 3 文字常量區,常量字串 4 堆區,malloc,new 5 棧區,區域性變數 函式形參,棧區變數的位址不可通過函式返回c語言中字串定義形式 char n hello char a hello 1.變數n位於...

C語言中的常量

常量,就是指在程式執行過程中不會改變的量。在c語言裡如何表示常量呢?一共有三種方式,一種是字面量表示法 如程式中的1,22,a this is a string 等都是字面量表示。另 一種是名字表示法是 const 型別 常量名 值。如 const int age 21。第三種表示方式是 defin...