const在C语言中的用法
来源:互联网 发布:监控网络设置方法 编辑:程序博客网 时间:2024/06/04 23:24
const作用:防止定义的变量被修改
1、用于修饰变量
const int a=10;//合法
int const b=10;/合法,等价const int =10;
const int c;//非法
int const d;//非法
注意:必须有初始值
2、用于修饰指针
const修饰的*sp,所以sp指针指向的地址可以改变,但是*sp执行的内容不可改变
第一:const int *sp//指针可变,指向内容不可变
int const *sp//指针可变,指向内容不可变
int temp=10;
int temp2=70;
const int *sp=&temp;//
sp=&temp2;//合法,修改指针
*sp=300;//非法,如果定义指针用int *sp=&temp;方式则合法
const修饰的*sp,所以sp指针指向的地址可以改变,但是*sp执行的内容不可改变
第二种:int *const sp//指针不可变,指向的内容可变
例如:
int temp=10;
int temp2=70;
int *const sp=&temp;
// sp=&temp2;//不合法,指针不可变,指向内容可以改变
*sp=300;//合法,
printf("*p=%d",temp);//结果为300
第四种:
const int *const sp//sonst即指针不可变、指向的变量也不可改变
3、修饰函数形参
void func(const int &num)//防止按地址传入的原始数据被修改
{
num=100;//错误,不能修改
}
补充:既然怕修改为啥不直接使用按变量方式传递
答:按变量的方式传递浪费内存和时间,效率不高,失去了按地址传递的意义
4、修饰函数返回值
例如:const int func();
则接受的值也需要使用const 限定
const int a=func();//正确
int a=func();//错误
5. 可以避免不必要的内存分配
#define STRING "abcdefghijklmn\n"
const char string[]="abcdefghijklm\n";
...
printf(STRING); //为STRING分配了第一次内存
printf(string); //为string一次分配了内存,以后不再分配
...
printf(STRING); //为STRING分配了第二次内存
printf(string);
...
由于const定义常量从汇编的角度来看,只是给出了对应的内存地址,
而不是象#define一样给出的是立即数,所以,const定义的常量在
程序运行过程中只有一份拷贝,而#define定义的常量在内存中有
若干个拷贝。
1、用于修饰变量
const int a=10;//合法
int const b=10;/合法,等价const int =10;
const int c;//非法
int const d;//非法
注意:必须有初始值
2、用于修饰指针
const修饰的*sp,所以sp指针指向的地址可以改变,但是*sp执行的内容不可改变
第一:const int *sp//指针可变,指向内容不可变
int const *sp//指针可变,指向内容不可变
int temp=10;
int temp2=70;
const int *sp=&temp;//
sp=&temp2;//合法,修改指针
*sp=300;//非法,如果定义指针用int *sp=&temp;方式则合法
const修饰的*sp,所以sp指针指向的地址可以改变,但是*sp执行的内容不可改变
第二种:int *const sp//指针不可变,指向的内容可变
例如:
int temp=10;
int temp2=70;
int *const sp=&temp;
// sp=&temp2;//不合法,指针不可变,指向内容可以改变
*sp=300;//合法,
printf("*p=%d",temp);//结果为300
第四种:
const int *const sp//sonst即指针不可变、指向的变量也不可改变
3、修饰函数形参
void func(const int &num)//防止按地址传入的原始数据被修改
{
num=100;//错误,不能修改
}
补充:既然怕修改为啥不直接使用按变量方式传递
答:按变量的方式传递浪费内存和时间,效率不高,失去了按地址传递的意义
4、修饰函数返回值
例如:const int func();
则接受的值也需要使用const 限定
const int a=func();//正确
int a=func();//错误
5. 可以避免不必要的内存分配
#define STRING "abcdefghijklmn\n"
const char string[]="abcdefghijklm\n";
...
printf(STRING); //为STRING分配了第一次内存
printf(string); //为string一次分配了内存,以后不再分配
...
printf(STRING); //为STRING分配了第二次内存
printf(string);
...
由于const定义常量从汇编的角度来看,只是给出了对应的内存地址,
而不是象#define一样给出的是立即数,所以,const定义的常量在
程序运行过程中只有一份拷贝,而#define定义的常量在内存中有
若干个拷贝。
0 0
- const在C语言中的用法
- const在C语言中的用法详解
- const在c中的用法
- const在c中的用法
- c++,c语言中的const用法
- c语言中的const的用法
- c语言中的const的用法
- C语言中的const,free用法详解
- CONST在C语言中的应用
- const 在c c++语言中的不同
- C语言 const 用法
- C语言中的const
- C语言中的const
- C语言中的const
- C语言中的const
- C语言中的const
- const 在C语言和C++语言中的区别
- C语言中的const,volatile,restrict用法总结
- UIalertController
- 创业者要突破的女性用户痛点在哪儿?
- 构建之法——现代软件工程
- Android 后台服务Service实现
- 分离链表法哈希表的C++实现(最新修改)
- const在C语言中的用法
- GUI原型设计工具Pencil
- Ajax中Get请求与Post请求的区别
- Java身份证验证方法
- windows下统计某ip的指定端口的连接数
- 设置firebug自动启动
- 如何把字符串型数据转换为整型
- C多线程编程
- Java日期时间格式