立即學習:
學習目標const修飾符是什麼?
const指標的宣告方法。
const的多種形式,如何理解。
什麼時候指標需要使用const?
const是什麼?
使用const修飾的變數,我們稱之為常量,即不可修改的變數,例如下面的:
const int a = 10;
a = 20; // 修改失敗,編譯錯誤
const char c = 'a';
c = 'a'; // 一樣修改失敗,編譯錯誤
const指標的宣告方法
int a = 10;
int b = 20;
int * const p = &a;
p = &b; // 語法錯誤,因為const指標不允許重新賦值。
const的多種形式
int a = 10;
int b = 20;
// kind 1
const int *p = &a; // const實際作用物件是指標指向的變數
p = &b; // 指標變數本身是可以修改的,這裡就是正確的
*p = 30; // 語法錯誤,前面const是約束了p所指向的位址中的值不可修改
// kind 2,等同於 kind 1的情況
int const *p = &a;
p = &b;
// kind 3
int * const p = &a; // const作用物件是指標自己
p = &b; // 語法錯誤
*p = 30; // ok
// kind 4
int *p const = &a; // 語法不允許的
p = &b;
什麼時候使用const
指標變數本身的值不允許修改。
int * const p = &a;
p = &b; // 語法錯誤
指標指向的變數是const變數時。
const int a = 10;
const int *p = &a;
指標指向的位址的值不允許修改。
int a = 10;
const int *p = &a;
課後作業
定義乙個const int 的變數a,然後定義個int指標p,指向a,然後我們試圖直接通過a = 3,來修改變數a的值,我會得到乙個編譯錯誤。我們使用*p來修改,卻可以成功,不如試試吧,搞清楚為什麼?
const int a = 0;
int *p = (int *)&a; // 會有乙個警告,通過強制轉換型別,可以消除警告。
// 編譯錯誤,因為a是乙個const變數,不可以修改。
a = 3;
// 可以修改,因為p是乙個非const的,存在隱患,a是乙個const,但是卻可以通過p修改。
*p = 3;
6 3 C語言switch語句
用 if.else 語句在處理多分支的時候,分支太多就會顯得不方便,且容易出現 if 和 else配對出現錯誤的情況,在 c 語言中提供了另外一種多分支選擇的語句 switch 語句,它的基本語法格式如下 switch 表示式 它的執行過程是 首先計算 表示式 的值,然後從第乙個 case 開始,與...
63 C語言異常處理
異常的概念 程式在執行過程中可能產生異常,異常與bug的區別 異常是程式執行時可預料的執行分支。bug是程式中的錯誤,是不被預期的執行方式。異常 執行時除0的情況,需要開啟的外部檔案,陣列訪問時越界。bug 使用野指標,堆陣列使用結束後未釋放,選擇排序無法處理長度為0的陣列。c語言處理方式 if.e...
63 C語言異常處理
目錄 1.異常處理 程式設計實驗 除法操作異常處理 2.異常處理的方式 程式設計實驗 除法操作異常處理優化 例項分析 異常處理 分析 3.小結 異常的概念 異常是程式執行時可預料的執行分支 bug是程式中的錯誤,是不被預期的執行方式 異常 exception 和bug的對比 異常執行時產生除0的情況...