代码段一: void testconst(const int *a){ a=0; } 代码段二: void testconst(const int *a){ *a=0; } 代码段三: void testconst(const int a){ a=0; } 为啥代码段一能够通过运行,代码段二不可以? 另:const这个关键词其实是编译器需要使用的对不对?编译器用来判断函数内部有没有违反const的约束。 |
|
5分 |
第一个 const int *a是说*a为常量,不能给*a赋值,但可给a赋值,例如:*a=4;error a=&c;right
int * const a;则是a不可赋值,*a可以 例如 1.#include<stdio.h> main() { const int *a ; int c=3; a=&c;无警告//*a=4;错误 } 2. #include<stdio.h> main() { int b=4,c=3; int *const a=&c ;//要初始化,不然会出现野指针 *a=4;//正确a=&b; 错误 } |
2分 |
const int *a,a是指针变量,*a是常量,不能赋值
|
2分 |
const int * a 内容常量
int* const a. 指针常量 |
3分 | |
8分 |
第二个改成 int* const a.
原理: const & 指针 |