簡體   English   中英

將 const char* 轉換為 char*

[英]Convert const char* into a char*

當我聲明和定義一個 char* 變量時,我總是想知道編譯器的抱怨。

char* myChar = "Char";

編譯器會抱怨它不能將 const char* 轉換為 char*。 它需要像這樣的顯式轉換

char* myChar = (char*)"Char";

我的第一個問題是這是否是用 const char* 初始化 char* 的正確方法。 我的第二個問題是,為什么編譯器需要這種顯式轉換。 我認為 const char* 和 char* 之間沒有太大區別,除了 const。

在技術層面上, const MyType*MyType*之間存在很大差異,在您的示例中更容易看到char* myChar = "Char"; 因為 litteral 字符串可以是 memory 的一部分,可能不會更改,但是通過將其分配給非常量指針,您說您可能會計划更改某些字符。 這種行為是未定義的。 它可能會起作用,它可能會使您的程序意外停止,您甚至不能排除任何其他行為。

通過強制轉換(更喜歡 C++ 中的const_cast ),您是在對編譯器說您知道自己在做什么,而且您知道得更多。 正常的解決方案是const char* myChar = "Char"; 甚至const char* const myChar = "Char"; 如果您不打算指向其他字符 arrays。

在 C++ 中,如果您想使用字符串,我發現使用std::string會更加清晰。

對於高級程序員來說,在完整性、安全性和性能方面,const 和 non-const 之間肯定存在很大差異。 當我們想要強調不允許用戶更改特定對象/函數/變量時,我們基本上使用 const。

檢查const 正確性

添加/刪除 const/volatile 修飾符的最佳實踐方法是使用 const_cast 運算符。

檢查const_case 運算符

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM