我想了解如何在C代碼中使用const
。首先,我並沒有真正打擾它的使用,但後來我看到了很多使用const
的例子。我應該努力回去虔誠地做出合適的變數const
?或者我只是在等待我的時間?如何最好地在C中使用const關鍵字?
我想這會讓讀取哪些變量更容易,尤其是在函數調用中,對人類和編譯器來說更是如此。我是否錯過了其他重要的觀點?
我想了解如何在C代碼中使用const
。首先,我並沒有真正打擾它的使用,但後來我看到了很多使用const
的例子。我應該努力回去虔誠地做出合適的變數const
?或者我只是在等待我的時間?如何最好地在C中使用const關鍵字?
我想這會讓讀取哪些變量更容易,尤其是在函數調用中,對人類和編譯器來說更是如此。我是否錯過了其他重要的觀點?
const
是鍵入,#define
宏是不是。
const
作用域爲C塊,#define
作用於文件。
const
對參數傳遞最有用。如果您看到在帶指針的原型上使用const
,則知道傳遞數組或結構是安全的,因爲函數不會改變它。沒有const
它可以。
看看如strcpy()
的定義,你會明白我的意思。一開始就將「常量」應用於函數原型。複雜的裝修const
並不像「很多工作」那麼困難(但如果按小時計算,還可以)。
還認爲:
const char *s = "Hello World";
char *s = "Hello World";
這是正確的,爲什麼?
所以在你的例子中,我假設我不能在第一行中更改'「Hello World」'部分(但我可以完全指向其他字符串),那是正確的嗎?我在這裏和那裏也看到了這種符號,是字符串(即'char'數組)應該如何實例化? – c00kiemonster
@ c00kiemonster:如果內容可以修改,不要使它成爲'const'。但在上面的例子中,''* *是一個常量,所以不能修改。 –
@ c00kiemonster:是的,第一個例子,'const'是正確的。第二個例子不正確,但不幸的是很常見。這將導致嘗試改變只讀內存(崩潰!)。很久以前,Visual Studio 5都採用了這種方法,並給出了一些「有趣」的效果。 – cdarke
使用const
不僅是一種很好的做法,而且提高了代碼的可讀性和可理解性,並有助於防止出現一些常見錯誤。肯定在適當的時候使用const。
How do I best use the const keyword in C?
使用const
當你想讓它的 「只讀」 。就這麼簡單:)
無論如何,一切都是變數。正如你所說,const只是一個提示,指定的值不應該改變。但你可以擺弄指針,而不需要改變編譯器背後的值:http://stackoverflow.com/questions/3801557/can-we-change-the-value-of-a-constant-through-pointers –
相關:[關於const正確性賣給我](http://stackoverflow.com/questions/136880/sell-me-on-const-correctness)(它是C++,但也與C有關)。 – netcoder
我不打擾回到工作的應用程序,你完成了。如果你有庫,使它們使用'const'並不壞。有些時候你不得不放棄。例如'const'和多維數組真的非常合作。 – Shahbaz