以下內容爲本人看“傳智播客”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代表整個數組的首地址