面試一直會問道const的用法、原理等,索性趁回歸基礎總結一下。
const引用示例**:
const int test1 = 1;
const int test2 = 2;
int test3 = 3;
int test4 = 4;
int &ref = test3;
ref += 1;
cout << test3 << endl;
//1.引用修改非const物件的值
const int &t1 = test1;
cout << t1 << endl;
// 2.t1 = test2; 報錯,const引用無法修改(read only)
const int &t3 = test3;
cout << t3 << endl;
test3 += 1;
cout << t3 << endl;
// t3 += 1; // 錯誤,引用本身無法修改
// 3.可以指向非const變數,非const變數可以修改。
// 4.int &t4 = test2; 報錯,非const引用無法指向const常量
double test5 = 5.0;
// int &t5 = test5; 報錯,無法用 "double" 型別的值初始化 "int &" 型別的引用
const int &t5 = test5;
cout << t5 << endl;
// 5. 非const變數只能繫結到同型別的引用中,const變數可以繫結不同但相關的型別
const指標示例**:
int a = 10;
const int b = 20;
const int *p = &a;
const int *q = &b;
// *p = 11; 報錯,不能通過指標修改。
cout << *p << " - " << *q << endl;
q = p;
a = 30;
cout << *p << " - " << *q << endl;
/* 解釋:
const int *q 指的是指向的位址可以改,指向的值不能改(*p=11非法).
const 修飾的目標是int *q,也就是q所指向的值,所以再給q賦值是非法的。
const int *q可以指向變數或常量,然而不能通過q這個指標去修改指向的值,
但是如果指向的是乙個變數,變數本身是可以重新賦值的,只是不能通過指標去修改。
*/int *const x = &a;
// int *const y = &b; 報錯,不能指向常量
int c = 11;
// x = &c; 報錯,常量位址不能修改
cout << *p << " - " << *q << endl;
/* 解釋:
int * const x 表示x位址是乙個常量,它必須指向乙個固定的位址。但是位址裡面
的值是可以改變的,所以int * const x不能指向乙個常量。它只是限制你的位址不能
改變而已。
*/
Chapter03 第三節 浮點數
常規表示 12.34 0.01 8.0 e表示 2.5e 8 2.5 10 8 7e6 7.0 10 6 e大小寫隨意 e x或者e x表示小數點前移或後移x個位置,所以叫做浮點數 有效位 從右往左數第乙個不為0的數起到最左邊 description 浮點數精度問題 author andew dat...
彙編 第二節
第二節 cpu主要有有運算器,控制器,暫存器,三部分組成 8086 cpu有14個暫存器,如ax,bx,cx,dx,si。8086所有暫存器都是16位的,可以存放2個byte即位元組,16位二進位制數 所能存放的最大數值是 11111111111 2 16 1 從0開始,所以 1嘛 通用暫存器為4個...
函式第二節
coding utf 8 1.定義乙個方法get num num num引數是列表型別,判斷列表裡面的元素為數字型別。其他型別則報錯,並且返回乙個偶數列表 注 列表裡面的元素為偶數 def get num l l for i in l 判斷列表l的元素是否都為整形 if not isinstance...