面向对象是C++的重要特性. 但是c++在c的基础上新增加的几点优化也是很耀眼的 就const直接可以取代c中的#define 以下几点很重要,学不好后果也也很严重 const 1. 限定符声明变量只能被读 const int i=5; int j=0; ... i=j; //非法,导致编译错误 j=i; //合法 2. 必须初始化 const int i=5; //合法 const int j; //非法,导致编译错误 3. 在另一连接文件中引用const常量 extern const int i; //合法 extern cons...
by __Sherry__ - C/C++ - 2011-03-29 08:23:20 阅读(1959) 回复(6)
const在C语言中算是一个比较新的描述符,我们称之为常量修饰符,意即其所修饰 的对象为常量(immutable)。 我们来分情况看语法上它该如何被使用。 1、函数体内修饰局部变量。 例: void func(){ const int a=0; } 首先,我们先把const这个单词忽略不看,那么a是一个int类型的局部自动变量, 我们给它赋予初始值0。 然后再看const. const作为一个类型限定词,和int有相同的地位。 const int a; int const a; 是等价的。于是此处我们一...
int main() { const char *p = "this is a test\n"; p = "xhl"; printf("p = %s\n", p); char * const p1 = "this is a test\n"; memcpy(p1, "xie", 3); printf("p1 = %s\n", p1); } const char *p;和char * const p;这两个的区别。 const char *p是指针不能改变。其值可以变。 char * const p是指针的值不能改变。其指针可以变。 但是,上面的程序还能够运行呢。 请那位大虾指点。
void example(const char *s) { if( s[0] != '0' ) // line 1 { s[0] = '0'; // line 2 } } 请问这样使用会不会出现问题 对于line 1,我编译程序的时候系统提示我: An expression of type "const char" cannot be modified. 我觉得象上面那样使用应该没有什么问题,但是编译不能通过
代码是这样的: int a = 4; int b = 5; int const *p1 = &a; //加了const表示可以修改p1这个指针,但是不能修改p1所指向的值 那么我的运行结果就有趣了 a = 11;//这个可以运行,不报错 *p1 = 11;//这行不可以运行,报错 根据我的理解,a=11这个应该也要报错的,前面不是说了const在此处表示的是:不能修改p1所指向的值吗? a=11这个就相当于修改了p1所指向的值了啊? 这样理解有什么不对吗,请大家指点一下
最近总是看到这样的函数声明方式,这个const是起什么作用的? uint32_t GetCount() const { return(GetVar(mDevice->voltages_count)); };
以下内容是引用: C++ Primer读书笔记 作者:neplusultra linuxsir (2005-03-23 16:44:27) 1、下面是一个几乎所有人刚开始都会搞错的问题: 已知:typedef char *cstring; 在以下声明中,cstr的类型是什么? extern const cstring cstr; 错误答案:const char *cstr; 正确答案:char *const cstr; 错误在于将typedef当作宏扩展。const 修饰cstr的类型。cstr是一个指针,因此,这个定义声明了cstr是一个指向字符的const指...
已知 int error=0; 那么 int *const err=&error; 与 int const *err=&error; 有什么区别? [思考1]: 以下的这种赋值方法正确吗? const A* c=new A(); A* e = c; [思考2]: 以下的这种赋值方法正确吗? A* const c = new A(); A* b = c; [ 本帖最后由 wxjeacen 于 2009-3-22 16:37 编辑 ]