|
代码段一:
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 & 指针 |