天天看點

define typedef const用法

c語言定義常量時有三種方式,#define,typedef和const,下面總結下這三種方式的用法: define宏定義:本質是簡單的文本替換 #define PI 3.1415296; 由于define定義的函數不會進行類型檢查,隻是在預處理時将調用宏定義中的參數進行簡單的替換而已,是以可能會造成意外的錯誤。比如常見錯誤: #define point (int*); point a,b;//本意是想定義兩個指針,但是實際上是int * a,b;定義了一個指針一個普通變量 define宏除了可以定義常量以外,還能定義函數,如#define max(a,b) ((a)>(b)?(a):(b)),注意在定義時要加入适當的括号,不然很容易出錯。 typedef:與define宏的不同在于編譯時期解釋,而不是預處理時期替換 用法:typedef 新類型; 如typedef int A[10]; A a;//相當于 int a[10]; 分析:int A[10]本身是定義了一個變量A,但是如果使用typedef文法進行定義後,A就轉變成了一個類型,可以用于其他變量的定義。 使用typedef可以解決上述define中定義變量時遇到的問題,如: typedef int * point; point a,b;//此時a和b都是int*類型

const: 1、const修飾普通變量 const修飾的變量表示該變量不可修改,隻能在初始化時對變量指派,否則則不再能為const變量指派。 const  int a=2; int const b;  //const和類型的位置可以互換,如果類型為指針則不能随意互換 b=3;//error 2、const修飾指針變量 const int *a;//修飾指向的對象(*a),*a不可變,指針a可變 int const *a;//修飾指向的對象(*a),*a不可變,指針a可變 int * const a;//修飾指針(a),a不可變,指針指向的對象*a可變 const int * const a; //指針指向的對象*a不可變,指針a不可變 但是,如果const修飾的是指向char*的指針,指針指向的内容仍舊是不能修改,因為指針指向的是常量字元串不可修改。如char * const p; p[2]='a';       //會出現段錯誤

繼續閱讀