Loading... # 指针是const * 表示一旦得到了某个变量的地址,不能在指向其他变量 ```C int i,j; int* const p = &i;//p是const *p = 26;//OK p++;//ERROR p = &j;//ERROR ``` # 所指的是const * 表示不能通过这个指针去修改那个变量(并不能使得那个变量成为const) ```c int i,j; const int* p = &i; *p = 26;//ERROR!(*p)是const i = 26;//OK p = &j;//OK ``` **这些是啥意思?** ```C int i; const int* p1 = &i; int const* p2 = &i; int* const p3 = &i; ``` 判断哪个被const了的标志是const在*的前面还是后面 所以第一个和第二个是一样的。 # 转换 * 总可以把一个非const的值转换成const的 ```C void f(const int* x); int a = 15; f(&a);//OK const int b = a; f(&b);//OK b = a + 1;//ERROR! ``` * 当要传递的参数的类型比地址大的时候,这是常用的手段:即能用比较少的字节数传递值给参数,又能避免函数对外面的变量的修改 # const数组 ```C const int a[]={1,2,3,4,5,6}; ``` * 数组变量已经是const的指针了,这里const表明数组的每个单元格都是const int * 所以必须通过初始化进行赋值 # 保护数组值 * 因为把数组传入函数时传递的是地址,所以那个函数内部可以修改数组的值 * 为了保护数组不被函数破坏,可以设置参数为const ```C int sum(const int a[],int length); ``` 最后修改:2021 年 03 月 14 日 © 禁止转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏