C++/C | 關於char* char[] char = new char[n]


將字符串常量賦給\(char*\)會怎么樣?

1. 先看下在C++中給\(char*\)賦予一個常量字符串會有怎樣的結果:

在VC環境下運行, VC直接禁止這樣的操作通過編譯, 拋出Error.

GCC下則拋出Warning, 這是GCC下給出的warning信息:

2.如果是在C標准下, 那么將字符串常量賦給\(char*\)可以正常編譯通過.
且C語言標准下,這是正常的. 但是C++中這樣修改賦值則會導致程序無法正常結束. 因而更推薦的寫法是\(const\) \(char*\), 這會避免后續代碼中出現修改字符串常量的行為.

2. \(char*\)\(char[]\), \(char = new char[n]\)區別在哪?

    char *a = "12345";   // 字符串常量, 更推薦寫const char*
    char b[] = "12345"; // 棧區開辟空間, 動態
    char *c = new char[6]; // 堆區開辟空間, 動態
    strcpy(c, "12345");
    delete []c;

后兩種寫法中都可以對字符串的內容進行修改.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM