关于const关键字作用范围和使用效果的讨论:
const是使一个变量变成一个常数。使所定义的变量的值不能被改变。但当const作用一个指针变量或一个函数时就不清楚其真正的作用效果了。测试以下程序初步判断其作用。
程序代码:
(1)
#include<iostream>
using namespace std;
void main()
{ char cc[]="asdf";
char dd[]="jkl";
const char *p;
char const *a;
char * const b;
cout<<p<<endl<<a<<endl<<b<<endl;
}
调试结果:
C:/Documents and Settings/is54/wjh.cpp(9) : error C2734: 'b' : const object must be initialized if not extern
(2)
#include<iostream>
using namespace std;
void main()
{ char cc[]="asdf";
char dd[]="jkl";
const char *p=cc;
char const *a=cc;
char * const b=cc;
cout<<p<<endl<<a<<endl<<b<<endl;
}
调试结果:
通过。
运行结果:
asdf
asdf
asdf
Press any key to continue
(3)
#include<iostream>
using namespace std;
void main()
{ char cc[]="asdf";
char dd[]="jkl";
const char *p=cc;
char const *a=cc;
char * const b=cc;
cout<<p<<endl<<a<<endl<<b<<endl;
p=dd;
a=dd;
b=dd;
cout<<p<<endl<<a<<endl<<b<<endl;
}
调试结果:
C:/Documents and Settings/is54/wjh.cpp(13) : error C2166: l-value specifies const object
(4)
#include<iostream>
using namespace std;
void main()
{ char cc[]="asdf";
char dd[]="jkl";
const char *p=cc;
char const *a=cc;
char * const b=cc;
cout<<p<<endl<<a<<endl<<b<<endl;
p=dd;
a=dd;
cout<<p<<endl<<a<<endl;
}
调试结果:
通过。
运行结果:
asdf
asdf
asdf
jkl
jkl
Press any key to continue
(5)
#include<iostream>
using namespace std;
void main()
{ char cc[]="asdf";
char dd[]="jkl";
const char *p=cc;
char const *a=cc;
char * const b=cc;
cout<<p<<endl<<a<<endl<<b<<endl;
*p='q';
cout<<p<<endl<<a<<endl;
}
调试结果:
C:/Documents and Settings/is54/wjh.cpp(11) : error C2166: l-value specifies const object
(6)
#include<iostream>
using namespace std;
void main()
{ char cc[]="asdf";
char dd[]="jkl";
const char *p=cc;
char const *a=cc;
char * const b=cc;
cout<<p<<endl<<a<<endl<<b<<endl;
*a='q';
cout<<p<<endl<<a<<endl;
}
调试结果:
C:/Documents and Settings/is54/wjh.cpp(11) : error C2166: l-value specifies const object
(7)
#include<iostream>
using namespace std;
void main()
{ char cc[]="asdf";
char dd[]="jkl";
const char *p=cc;
char const *a=cc;
char * const b=cc;
cout<<p<<endl<<a<<endl<<b<<endl;
*b='q';
cout<<b<<endl;
}
调试结果:通过。
运行结果:
asdf
asdf
asdf
qsdf
Press any key to continue
(8)
#include<iostream>
using namespace std;
void main()
{ char cc[]="asdf";
char dd[]="jkl";
const char *p=cc;
cout<<p<<endl;
cc[0]='q';
cout<<p<<endl;
}
调试结果:通过。
运行结果:
asdf
qsdf
Press any key to continue
(9)
#include<iostream>
using namespace std;
void main()
{ char cc[]="asdf";
char dd[]="jkl";
char *const p=cc;
cout<<p<<endl;
cc[0]='q';
cout<<p<<endl;
}
调试结果:通过。
运行结果:
asdf
qsdf
Press any key to continue
(10)
#include<iostream>
using namespace std;
void main()
{ char cc[]="asdf";
char dd[]="jkl";
char const *p=cc;
cout<<p<<endl;
cc[0]='q';
cout<<p<<endl;
}
调试结果:通过。
运行结果:
asdf
qsdf
Press any key to continue
(11)
#include<iostream>
using namespace std;
void main()
{ char cc[]="asdf";
char dd[]="jkl";
const char *p=cc,bb='c';
char const *a=cc;
char * const b=cc;
cout<<p<<endl<<a<<endl<<b<<endl;
bb='d';
}
调试结果:
C:/Program Files/Microsoft Visual Studio/MyProjects/wjh/wjh.cpp(11) : error C2166: l-value specifies const object
分享到:
相关推荐
在C语言中,`extern`、`static` 和 `const` 是三个非常重要的关键字,它们在定义变量时起到不同的作用。本文将深入探讨这三个关键字分别在定义全局变量和局部变量时的不同用法及其效果。 #### 二、全局变量的修饰 ...
其中,let和const关键字的引入,对于变量和常量的声明提出了新的规则和使用场景。以下是对ES6中let和const定义变量与常量的应用实例分析的详细知识点梳理: 1. let关键字: - let关键字声明的变量具有块级作用域...
`const`关键字用于声明常量或指定成员函数不修改对象状态,这有助于提高代码的可读性和安全性。使用`const`可以防止意外修改,提高程序的稳定性和效率。 ### 10. const_cast `const_cast`是一种类型转换运算符,...
本文将深入解析C语言中的32个关键字,帮助初学者和进阶者更好地理解和掌握C语言的核心概念。 ### 1. auto:自动变量 `auto`关键字在C语言中用于声明自动变量,即在函数调用时分配内存,在函数退出时释放内存的变量...
另外,学习常量定义的同时,还应了解C51单片机C语言中变量的定义和使用方法,这涉及到更多数据类型的使用和变量的作用域、存储类别的选择,例如静态变量(static)、外部变量(extern)、寄存器变量(register)等。...
20. `register`:建议编译器将变量存储在寄存器中,以提高访问速度,但实际效果取决于编译器和硬件资源。 21. `return`:在函数中使用,返回一个值给调用者,结束函数执行。 22. `short`:表示短整型,存储空间...
而const修饰的变量使用const关键字修饰,例如const int month = 12;。 1.5 关键字 关键字是C++中预先保留的单词,用于定义变量、常量和函数等。C++关键字包括auto、break、case、catch、char、class、const、...
例如,我们可以通过查找并替换关键字,同时设置这些关键字的字体颜色为红色,背景色为白色,以达到高亮显示的效果。以下是一个简单的示例: ```cpp void HighlightKeyword(HWND hWndRichEdit, const wchar_t* ...
### C++ 中 `const` 和 `static` ...`static` 关键字主要用于控制变量的存储位置、可见性和作用域,而 `const` 关键字则用于定义不可更改的数据。掌握这两个关键字的正确使用方法有助于编写更安全、更高效的代码。
JavaScript是一种广泛应用于Web开发的编程语言,具有轻量级、功能强大和... - 使用`var`、`let`或`const`关键字声明变量或常量。 - `var`声明的变量具有函数作用域或全局作用域;`let`和`const`声明的变量具有块级作
程序使用ezwin库来创建一个窗口,并使用随机数生成器来生成随机的颜色、大小和位置来模拟万花筒的效果。 第一个知识点:C++语言基础 在这个程序中,我们使用了C++语言的基本结构,包括变量声明、函数定义、循环...
总之,理解和正确使用C++中的静态成员和const成员对于编写高效、可维护的代码至关重要,它们提供了在类中实现数据共享和无对象依赖的功能调用的手段。在实际编程中,应根据需求选择合适的数据成员类型,以达到最佳的...
2. **变量声明**:使用`var`、`let`或`const`关键字声明变量,其中`let`和`const`是ES6引入的新特性,`const`声明的变量不能重新赋值。 3. **函数**:JavaScript中的函数是第一类对象,可以作为参数传递,也可以...
学会利用const关键字限制变量的修改,提高代码的稳定性和安全性,避免不必要的副作用。 #### 提高程序效率 关注代码的性能,如避免不必要的计算和数据复制,优化算法和数据结构,减少资源消耗,提高程序运行速度。 ...
- **const关键字**:使用const创建不可变Widget,提升构建速度。 - **Profile模式**:使用DevTools进行性能分析,找出瓶颈并优化。 10. **国际化与无障碍功能**: - **Localizations**:实现多语言支持,使用`...
- **作用域**:JavaScript有全局作用域和局部作用域,通过var、let、const关键字定义变量,决定它们在何处可见。作用域规则决定了哪些代码可以访问这些变量,从而实现数据的保护。 - **闭包**:闭包是JavaScript中...
JavaScript中的变量通过var、let或const关键字声明,具有词法作用域,理解变量的局部和全局作用域对于编写无bug的代码至关重要。 3. **数据结构** JavaScript 提供了数组和对象两种主要的数据结构。数组可以存储...
- **提供额外的信息**:`const` 提供关于变量使用意图的信息,增强代码的可读性和可维护性。 - **提高代码质量**:使用 `const` 可以避免无意中修改数据,减少程序中的错误。 - **优化性能**:编译器可以根据 `...
### 经典C语言面试题解析 #### 预处理器(Preprocessor) ...综上所述,这些知识点覆盖了C语言中预处理器的使用、数据类型的深入理解、`static`和`const`关键字的功能与应用场景,是面试准备中不可或缺的核心内容。
然而,ECMAScript 5(ES5)标准的 JavaScript 并不支持这种作用域规则,直到 ES6(ECMAScript 2015)发布,JavaScript 才正式加入了块级作用域的特性,通过 let 和 const 关键字来声明块级作用域变量。 作用域的...