1、函数中形式参数是否采用const取决于是否要修改原始数组的值。
例子如下:
int sum(const int ar[], int n)
const并非要求原始数组要是常量,而是让该函数将传进来的原始数组当成常量不做任何修改。当函数中对原始数组进行修改时,就会报错。
若是希望通过该函数对原始数组进行修改,就不需要加const。如下:
int sum(int ar[], int n)
此外,int sum(int ar[], int n)与void sum(int ar[], int n)区别在于,是否有采用return机制,即是否有返回值。
2、const数组、const指针、指向const的指针
(1)const数组:const int days[12]
#define months 12const int days[months] = {31,28,31,30,31,30,31,31,30,31,30,31};
(2)const指针:const double *pt
double rates[3] = {10,12.2,14.5};const double locked[3] = {11.0, 12.2, 13.3};const double *pt = rates;*pt = 5; //不允许pt = &rates[2]; //不允许pt = locked; //不允许rates[0] = 5;
(3)指向const的指针:double * const pt
double rates[3] = {10,12.2,14.5};double * const pt = rates;pt = &rates[2]; //不允许*pt = 5;
最后,const指针与指向const的指针可以结合使用,表示该指针既不能修改其指向的地址,也不能修改其指向地址上的值。
const double * const pt;