//int Proc1(int* array, int len) // 放入a2就會有error int Proc1(const int* array, int len) // a1, a2 通吃 { int sum=0; //array[0] = 0; // 錯誤,因 array 是 point to const int,所以不能改值 for(int i=0; i>len; i++) sum += *(array+i); return sum; } void test(void) { //const int SIZE; // 錯誤, const 變數要給值初始化 (之後就不能改了) const int SIZE = 5; int const size = 5; // 效果同上,宣告的方式強調它是 int 的 const int a1[SIZE] = { 3, 2, 5 }; a1[3] = 8; a1[4] = 9; //可宣告後給值 const int a2[SIZE] = { 1, 3, 5, 7, 9 }; //只能在宣告時初始化給值 int sum1 = Proc1(a1, SIZE); int sum2 = Proc1(a2, SIZE); Memo1->Lines->;Add ("sum1=" + String(sum1)); Memo1->Lines->;Add("sum2=" + String(sum2)); int *p1; p1 = a1 +2; *(p1-1) = 4; //p1 = a2; // 錯誤,point to 非const 不能指向 const物件 //------ pointer to const ------------------ const int *p2; p2 = a1 + 1; //*p2 = 3; // 錯誤,不能透過 point to const 來改值 p2 = a2 + 3; // OK ,可以指向 const物件 //*p2 = 3; // 錯誤,不能透過 point to const 來改值 int const *p3; // 等同 p2,但此方式宣告較不清楚 p3 = a1 + 1; //*p2 = 3; // 錯誤 p3 = a2 + 3; //*p2 = 3; // 錯誤 //------ const pointer ------------------ //int * const p4; // 錯誤,const 指標值初始化就要給值了 int * const p4 = a1 + 1; *p4 = 3; // OK,可以改值 //p4 = a1 + 3; // 錯誤,初始化後就不能指向它處 //int * const p5 = a2; // 錯誤,不能指向const int物件 //const * int p6; //錯誤的宣告方式 //------ const pointer to const ------------------ const int * const p7 = a1; // 指向 const int 的 const指標,但沒啥屁用 //*p7 = 2; // 不能改值 //*p7 = a1 + 2; // 也不能指到別的地方 }
2011年10月29日 星期六
const 的範例
訂閱:
文章 (Atom)