const 说明定义的变量是只读的
1.const修饰一个普通变量,表示这个变量是只读的,不可以修改的
const的位置与其类型的位置是可以调换的
2.const 修饰数组,表示数组是只读的,必须定义的时候进行初始化
3.const 修饰指针的时候,如果const放在*前面,表示指针指向的内容是只读的,不可以通过指针修改它所指向的存储内容
如果const在*后面说明指针本身是只读的,不能改变指针的指向
4.const 修饰形参:保证这个形参不会被函数修改
同时也可以告诉函数的调用者,本函数不会修改它里面的内容
可以提高函数可读性
1.const修饰一个普通变量,表示这个变量是只读的,不可以修改的
const的位置与其类型的位置是可以调换的
2.const 修饰数组,表示数组是只读的,必须定义的时候进行初始化
3.const 修饰指针的时候,如果const放在*前面,表示指针指向的内容是只读的,不可以通过指针修改它所指向的存储内容
如果const在*后面说明指针本身是只读的,不能改变指针的指向
4.const 修饰形参:保证这个形参不会被函数修改
同时也可以告诉函数的调用者,本函数不会修改它里面的内容
可以提高函数可读性
5.const修饰函数返回值说明它的返回值不能修改
void sum(const int num1,int num2){
/*
4。修饰形参:保证这个形参不会被函数修改
同时也可以告诉函数的调用者,本函数不会修改它里面的内容
可以提高函数可读性
*/
//num1 = num2; 会报错,因为num1已经被修饰了,只读
printf("%d\n",num1);
}
const char * strtest(){
//5.const 作为函数返回值说明它的返回值不能修改
return "hello";
}
//argc 说明当程序启动时候,从控制台传入的参数的个数
//argv 从控制台传入的参数的值
int main(int argc, const char * argv[]) {
//1.const 修饰普通变量
int const a = 10;
const int b = 20; //可以和数据类型调换位置
//a = 20; 这行会报错,const修饰后,不能修改,只能读取
printf("%d,%d\n",a,b);
//2.const 修饰数组
int const str[] = {1,2,3};
const int str1[] = {4,5,6};
//str[0] = 0; 报错,不能修改
//3.const 修饰指针
//3.1const 放在*前面,表示所指向的内容不能改变
int c = 30;
int const *p = &c;
//const int *p = &c; 也可以调换位置
//*p = 31; 报错,不能修改
//3.2const 放在*前面,表示所指向的地址不能改变
int d = 40;
int * const p1 = &d;
*p1 = 50; //可以修改指向的内容
//p1 = &c; 报错,不能改变指向
const int * const p2 = &c; //全都只读,不管是指针还是指向的内容
// *p2 =60;
// p2 = &d;
//5.const 作为函数返回值说明它的返回值不能修改
const char *strs = strtest();//需在前面加const,否则会报警告
printf("%s\n",strs);
return 0;
}