c语言中的关键字const
2017-04-06 12:52
232 查看
关键字 const 的几个用法规则:
1. const 可以用来保护 数组元素,
例如:void sum(const int arr[], int n)
在函数里面不能对数组元素进行更改
用const定义数组表示数组元素不能进行更改;
例如:const int arr[3] = {1, 2, 3};
arr[2] = 5; // error
所以如果不需要改变数组里面的元素,可以使用const来保护数组
2. 可以用const来创建符号常量,例如:const double PI = 3.14
这样在程序中出现 3.14 的地方都可以用PI来替代
3. 用const定义指针,(主要看const的位置)
例如:int arr[3] = {1, 2, 3};
const int * p1 = arr;
* p1 = 43; // error
// p1指向arr,这样不能通过 * p1 = 43,来改变arr[0],的值,
// 若要改变arr[0],可以arr[0] = 43;
int arr[3] = {4, 5, 6};
int * const pd = arr; // 从此p1 只能指向arr,但是可以通过 *pd 来改变 pd 指向的值
pd = &arr [2]; // error
* pd = 43; // 合法
int arr[3] = {7, 8, 9};
const int * const p2 = arr; // 从此 p2 只能指向arr,并且下面两行代码都是错误的
* p2 = 43; //error
p2 = & arr[1]; //error
4.将常量或非常量者数据的地址赋给指针常量的指针是合法的;
例如:int arr[5] = {89, 98, 45, 56, 35};
const int rates[4] = {1, 2, 3, 4};
const int * pc = arr; // 合法
pc = rates; // 合法
但是普通指针只能指向非常量数据
例如:const int arr[3] = {1, 2, 3};
int rates[3] = {4, 5, 6};
int * pd = rates; // 合法
pd = arr; // 非法
// 这样定义的函数可以接收常量非常量类型数据的地址
void arr_show(const int arr[], int n)
{
// 语句
}
//但是这样定义的函数只能接收常量类型数据的地址
void arr_mult(int arr[], int n)
{
// 语句
}
*****************************************************************************************************************************
参考:《C primer plus》第五版 中文版
1. const 可以用来保护 数组元素,
例如:void sum(const int arr[], int n)
在函数里面不能对数组元素进行更改
用const定义数组表示数组元素不能进行更改;
例如:const int arr[3] = {1, 2, 3};
arr[2] = 5; // error
所以如果不需要改变数组里面的元素,可以使用const来保护数组
2. 可以用const来创建符号常量,例如:const double PI = 3.14
这样在程序中出现 3.14 的地方都可以用PI来替代
3. 用const定义指针,(主要看const的位置)
例如:int arr[3] = {1, 2, 3};
const int * p1 = arr;
* p1 = 43; // error
// p1指向arr,这样不能通过 * p1 = 43,来改变arr[0],的值,
// 若要改变arr[0],可以arr[0] = 43;
int arr[3] = {4, 5, 6};
int * const pd = arr; // 从此p1 只能指向arr,但是可以通过 *pd 来改变 pd 指向的值
pd = &arr [2]; // error
* pd = 43; // 合法
int arr[3] = {7, 8, 9};
const int * const p2 = arr; // 从此 p2 只能指向arr,并且下面两行代码都是错误的
* p2 = 43; //error
p2 = & arr[1]; //error
4.将常量或非常量者数据的地址赋给指针常量的指针是合法的;
例如:int arr[5] = {89, 98, 45, 56, 35};
const int rates[4] = {1, 2, 3, 4};
const int * pc = arr; // 合法
pc = rates; // 合法
但是普通指针只能指向非常量数据
例如:const int arr[3] = {1, 2, 3};
int rates[3] = {4, 5, 6};
int * pd = rates; // 合法
pd = arr; // 非法
// 这样定义的函数可以接收常量非常量类型数据的地址
void arr_show(const int arr[], int n)
{
// 语句
}
//但是这样定义的函数只能接收常量类型数据的地址
void arr_mult(int arr[], int n)
{
// 语句
}
*****************************************************************************************************************************
参考:《C primer plus》第五版 中文版
相关文章推荐
- C语言中const关键字的用法
- 第10天C语言(12):const关键字
- C语言中Static和Const关键字的的作用
- c语言中的const关键字
- C语言的const关键字
- C语言中const关键字的用法
- C语言中volatile/register/const/static/extern/auto关键字的作用
- C语言中const关键字的用法
- C语言之关键字(一)auto,register,static,const的了解
- c语言学习笔记之const关键字(理解)
- C语言中关键字auto、static、register、const、volatile、ex...
- C语言中Static和Const关键字的的作用
- C语言之关键字(二) void,const
- C语言中Static和Const关键字的的作用
- C语言中几个关键字的作用(static、extern、const、register、auto、typedef)
- C语言中Static和Const关键字的的作用
- C语言const介绍(const关键字说明)
- C语言中关键字auto、static、register、const、volatile、extern的作用
- C语言中const关键字使用方法及使用场景
- C语言中关键字auto、static、register、const、volatile、extern的作用