//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)