程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C語言中const的用法

C語言中const的用法

編輯:關於C語言

1、const的普通用法
const int n = 10;
意思很明顯,n是一個只讀變量,程序不可以直接修改其值。這裡還有一個問題需要注意,即如下使用:int a[n];在ANSI C中,這種寫法是錯誤的,因為數組的大小應該是個常量,而n只是一個變量。

 

2、const用於指針
const int *p;
int const *p;
int * const p;

在最後的一種情況下,指針是只讀的(即p只讀),而在另外兩種情況下,指針所指向的對象是只讀的(即*p只讀)。const 是一個左結合的類型修飾符,它與其左側的類型修飾符一起為一個類型修飾符,所以,int const 限定 *p,不限定p。int *const 限定p,不限定*p。

 

這裡有一個簡便的區分方法:沿著*號劃一條線,如果const位於*的左側,則const就是用來修飾指針所指向的變量,即指針指向為常量;如果const位於*的右側,const就是修飾指針本身,即指針本身是常量。

 

3、const用於函數的地址傳遞參數
void foo(const int *p);
這種形式通常用於在數組形式的參數中模擬傳值調用。也就是相當於函數調用者聲稱:"我給你一個指向它的指針,但你不能去修改它。"如果函數編寫者遵循了這個約定,那麼就相當於模擬了值傳遞。這也是const最有用之處了:用來限定函數的形參,這樣該函數將不會修改實參指針所指的數據。這裡注意了,是函數不應該去修改而不是不能修改,也就是說const不能阻止參數的修改(原因見上)。

 

4、const用於限定函數的返回值
const int foo();
const struct mytype foo(); 
上述寫法限定函數的返回值不可被更新,當函數返回內部的類型時,已經是一個數值,當然不可被賦值更新,所以,此時const無意義,最好去掉,以免困惑。當函數返回自定義的類型時,這個類型仍然包含可以被賦值的變量成員,所以,此時有意義。

 

本文出自 “孫轲的技術博客” 博客,請務必保留此出處http://sunke.blog.51cto.com/4812218/1282573

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved