1、define 的用法:数组
在c语言中我常常会看到 :#define PI 12 ,这是建立了一个符号常量,这里面要注意没有那个等于号“=”;spa
2、const 的用法:指针
一、const 也能够来建立符号常量,可是const 的用法比define 在用法方面更加灵活,它能够建立const数组、const 指针、指向const 的指针,总结
const int RATE = 100; 这里能够看出一个区别,在const 建立的符号常量赋值时有一个“=”,这个不要被忽列掉,否则会出错的;这里举几个例子:数据
const 数组:const int days[10]={1,2,3,4,5,6,7,,8,9,10};注意:以后在使用这个数组时,不能修改数组元素的值,例如:days[9]=1000;这将会产生一个错误。
语言
const 指针:double rate[2]={1,2}; co
const double *pd=rate(建立了一个指向了const的指针pd); *pd=44(这将产生一个错误),而rate[0]=22(这个是容许的,由于rate未被const限定)
background
因此说,指向const 的指针不能用来修改值,可是咱们可让pd指向别处(pd++),也就是指向了rate[1],这个是被容许的;错误
二、在const 建立的指针赋值时要注意几点:const
int rate[4]={1,2,3,4};
const int tu[4]={5,6,7,8};
const int * pc=rate;(这个赋值有效), pc=tu (有效) pc=&rate[2](有效)
int * pcc=rate;(有效) ,pcc=tu(这个赋值无效),pcc=&rate[2];(有效);
因此说,把const 数据或非const 数据的地址初始化为指向const 的指针或为其赋值是合法的,不能把const数据地址赋给普通指针;
三、const 的其它用法:
声明一个不能指向别处的指针,注意const 的位置就能够了:
double rate[4]={1.2,1.3,1.4,1.5}
double *const pc =rare;
pc=&rate[3](这个是不被容许的)
*pc=22.44(这个修改值是被容许的,可是只能修改第一个值,也就是初始化那个地址上的值)
建立指针的时候,可使用两次const,该指针既不能修改它指向的地址,也不能修改指向地址上的值:
double rate[4]={2.3,5.6,7.8,8.9}
const double * const pc =rate;
pc=&rate[2](这个不容许指向别处)
*pc=86.3(这个也不被容许修改数组中的值)
说了这么多,总结一下:
在运用const 的时候,关键是注意它在那个位置上,在不一样位置上有不一样的用法,并且在赋值时,类型要对头,不能把const 的数据赋值给非cosnt 数据,可是可让非const 数据赋值给const数据。