C++中const关键字用法详解:const int *a与int * const a的区别

5星 · 超过95%的资源 | 下载需积分: 50 | DOC格式 | 46KB | 更新于2024-09-19 | 18 浏览量 | 4 下载量 举报
收藏
"这篇资源主要讨论了C++中`const`关键字的不同用法,特别是`const int *a`和`int * const a`这两种声明方式的区别,并通过实例进行了阐述。文章还介绍了`const`修饰变量和指针的各种情况,包括基本类型的`const`声明、指针的`const`修饰以及`const`指针的使用规则。" 在C++编程中,`const`关键字用于声明常量或使变量不可修改。以下是对`const`关键字在不同情况下的应用详解: 1. `const char *pCh`:这里的`const`修饰的是`char`,表示`pCh`是一个指向字符串常量的指针。这意味着`pCh`可以改变指向其他字符串常量,但不能改变所指向的字符串内容。 2. `char *const pCh`:`const`修饰的是`pCh`这个指针,表示`pCh`是一个指向字符串的常量指针,即`pCh`一旦初始化后就不能再改变指向,但字符串内容可以修改。 3. `const int a` 和 `int const a`:这两者等价,表示`a`是一个整型常量,其值不能被修改。 4. `const int *a`:`const`修饰的是`int`,意味着`a`是一个指向整型常量的指针,可以改变指针`a`指向其他整型常量,但不能通过`a`修改所指向的整型常量的值。 5. `int *const a`:`const`修饰的是`a`,即`a`是一个指向整型数的常量指针,不能改变`a`的指向,但可以通过`a`修改所指向的整型数的值。 6. `int const *a const`:`const`同时修饰了`int`和`a`,表示`a`是一个指向整型常量的常量指针,既不能改变`a`的指向,也不能通过`a`修改所指向的整型常量的值。 在声明`const`变量时,需要注意: - `const int r=100;` 是标准的`const`变量声明并初始化,其作用域为当前文件,且必须初始化。 - `extend const int r=100;` 将`const`改为外部链接,使得`r`的作用域扩大到全局,可以不初始化。 - `const int r[] = {...};` 和 `const S s[] = {...};` 都是常量集合,它们在编译时会被分配内存,因此不能在编译期间使用它们的大小作为数组长度等常量表达式。 对于指针的`const`修饰,关键在于理解`const`修饰的是指针还是指针所指向的对象。`const`在前(如`const int *a`)时,修饰的是指针所指向的对象,而在后(如`int * const a`)时,修饰的是指针本身。理解这一点有助于正确使用`const`指针,避免不必要的错误。例如,`const int *a`可以改变`a`的指向,但不能通过`a`改变所指向的整型数的值,而`int * const a`则不能改变`a`的指向,但可以改变`a`所指向的整型数的值。
身份认证 购VIP最低享 7 折!
30元优惠券

相关推荐