1. 程式人生 > >const、typedef 、 define總結

const、typedef 、 define總結

-m 接受 posit _for rep sets start eba csdn

constkeyword
const=read only,修飾的為僅僅讀變量而不是常量。const修飾的變量不能用作數組的維數也不能放在switch語句的case:之後。


主要作用有: 1.通過把不希望被改動的變量或參數用const來修飾。編譯器會保護這些變量不被改動增強系統的可靠性; 2.增強代碼的可讀性
[html] view plaincopyprint?技術分享技術分享

  1. const int a; //a為常量不能被改動
  2. int const a; //a為常量不能被改動
  3. const int *a; //a為指向一個常量的指針,a的值是能夠變量的
  4. int *const a; //const修飾a,a為一個指向整型變量的指針常量
定義時必須進行初始化賦值,一經定義不能改動。上述代碼1、2、4編譯時會報錯提示未初始化。
const和volatilekeyword的後面若緊跟類型說明符則作用於類型說明符。在其它情況下。作用於它左邊緊鄰的指針星號。


typedef 與 define的差別體如今兩個方面 1.define能夠對定義的宏類型名進行擴展,而typedef不能夠 [cpp] view plaincopyprint

">?

技術分享技術分享

  1. #define peach int
  2. unsigned peach i;//沒有問題
  3. typedef int peach;
  4. unsiged peach i;//錯誤,非法
definekeyword僅僅是簡單的字符替換,而typedef能夠看成是對類型的一種封裝。為現有類型取個新名字。
2在連續幾個變量的聲明中僅僅有typedef能夠保證類型的一致性 [cpp]
view plaincopyprint

">?

技術分享技術分享

  1. #define int_ptr int *;
  2. int_ptr chalk,cheese;
chalk為int *類型。而cheese為int型。由於define僅僅是簡單的字符串替換

typedef的特殊使用方式

用來聲明函數指針

[html] view plaincopyprint?

技術分享技術分享

  1. typedef void(*ptr_fun) (int);
  2. //ptr_fun是一個函數指針,參數為int型。返回值為void
  3. ptr_fun sinal(int,ptr_fun)
  4. //sinal是一個函數,接受int和ptr_fun兩個類型的參數,返回值為ptr_fun

typedef int A[5];

//a是一個指向有5個元素的整型數組的數組指針。A代表的類型是(int)[5] 。也即A b={1,2,3,4,5};

const、typedef 、 define總結