C提高3

以下內容爲本人看“傳智播客”C++基礎教程完整版視頻所做的筆記

const的使用

const修飾一個變量爲只讀
區分const在不同位置所表示意義的方法:
從左往右看,跳過類型,看修飾哪個字符
如果是*,說明指針指向的內存不能改變
如果是指針變量,說明指針的指向不能改變,指針的值不能改變
例如以下幾條語句:

buf[100] = "jfgdkvdhfkdbv";
const char *p =buf;   //代表不能通過改變指針p所指向的buf內存空間的值
//等價於 char const *p = buf;
p[1] = '2'; //err
p = "adshshs"; //ok,改變p的指向沒問題

char * const p2 = buf;  //代表指針p2只能指向buf 
p2[2] = '3'; //ok
p2 = "aishfhdifh"; // err

const char *const p3 = buf  //p3的指向不能變,指向的內存也不能變
  • 如何引用另一個.c文件中的const變量
extern const int a ; //在另一個.c文件中只能聲明不能定義

其實const在C語言中就是一個冒牌貨:雖然在變量面前加了const後無法直接修改變量,但是可以通過指針間接修改,代碼如下:

const int b = 10;
//b =100;  //err
int *q = &b;
*q = 100; //ok

二級指針作輸入模型(指針數組的使用)

數組的首行地址和首行首元素地址有區別,但的值是一樣的,a+i和*(a+i)是一樣的
區別:步長不一樣

char b[30];
    printf("&b:%d ,&b+1:%d\n", &b, &b+1);
    printf("b:%d ,b+1:%d", b, b+1);

輸出結果如下:
這裏寫圖片描述
b代表首元素地址,&b代表整個數組的首地址

發佈了25 篇原創文章 · 獲贊 4 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章