char p和char p 的問題

2021-09-30 10:28:41 字數 650 閱讀 8930

這個問題,平常也經常碰到,今天寫程式的時候又遇到,還是應該總結一下。

先貼**:

1 #include

2 char * mystrcpy(char *dest,const char *src)

3 9     char *temp = dest;

10     while(*src!='\0')

11    

16     *temp='\0';

17     return dest;

18 19 }

20 21 int main()

22 主要是自己編寫乙個strcpy函式,測試下,函式實現到時沒啥問題,在main函式中,出現問題了。

起先,我使用的是23,24行**,出現段錯誤,然後改為25,26行,成功執行結果,列印出hello world.

下面我來分析一下,「hello」和「hello world」是字串常量,儲存在記憶體中的靜態儲存區,23,24行定義的指標指向這些字串常量,這些常量在記憶體中任然只有乙份,儲存在靜態儲存區,所以通過這個指標來修改字串常量是非法的,會報段錯誤。而25,26行定義字元陣列是在棧中開闢的,賦值操作,相當於在棧中又新增了乙份拷貝,在記憶體中就有兩份拷貝,我們操作的只是棧中的那乙份,程式結束後就自動釋放了。

由此一來,便可以理解了。

char p 和 char p 區別及應用

p的含義是指向常量字元的指標 char p hello 等價於const char p hello 常量字元 說明hello這個字串是無法改變的,則不能更改指標指向的內容,來改變字串hello。p 2 w 錯誤 指向的指標 是可以改變自身的值,輸出p的時候就不是hello了而是別的字串 p news...

解析char p與char p 區別

主要解析的問題 問題1 include stdio.h char get string 1 char get string 2 int main 輸出 get string 1 亂碼或者沒有輸出 linux下沒有任何輸出 get string 2 hello world 為什麼會這樣?問題2 cha...

解析char p與char p 區別

主要解析的問題 問題1 include stdio.h char get string 1 char get string 2 int main 輸出 get string 1 亂碼或者沒有輸出 linux下沒有任何輸出 get string 2 hello world 為什麼會這樣?問題2 cha...