在c/c++中,指针本身就是一个难点,再加与const的结合,常会产生许多让人费解的地方,在这里做个小结。1)定义const对象constintbuffsize=512;因为常量定义以后就不能修改,所以定义时必须初始化。consti,j=0;//error,i没有初始化2)指向const对象的指针constint*p;这个p是一个..
分类:
其他好文 时间:
2015-06-09 17:44:31
阅读次数:
108
背景知识
编译器默认生成函数的规则如下:
1.定义一个类时,如果自己没有声明,那么编译器会自动帮助生成一个拷贝构造函数(copy construction),赋值操作符(copy assignment),析构函数(deconstruction)。
2.如果没有声明任何构造函数(包括拷贝构造函数),编译器会帮助声明一个默认构造函数。
构造函数(包括编译器生成的默认构造函数)的执行包括两个阶段...
分类:
其他好文 时间:
2015-05-24 15:45:47
阅读次数:
133
指针本身是一个对象,它可以指向另一个对象。因此,指针本身是不是常量和指针所指的对象是不是常量就是两个独立的问题。
顶层const表示指针本身是个常量。
底层const表示指针所指的对象是个常量。
下面所示,pi就是一个常量指针,不能修改pi的值。而pd则是一个指向常量的常量指针,既不能修改pd的值,也不能通过pd修改其指向对象的值。
int i = 0;
int *const pi = &...
分类:
其他好文 时间:
2015-05-22 13:29:58
阅读次数:
231
对于引用,网上很多说类似一个变量的别名,差不多就是这意思,引用和他绑定的那个变量 如果用取地址操作 给出的地址是一样的。 引用的创建不会占用空间这个说法略不严谨.. 因为取地址相同所以说他不占空间。 在编译阶段好像把引用当成 const 指针来处理, 而且不同的编译器 可能还有些差别。((在哪看到过...
分类:
编程语言 时间:
2015-04-24 21:03:27
阅读次数:
190
一、常指针: int *const p; //指针不可改变,但是指针指向的数据可以改变。 指向常量的指针: const int *p; //指针可以改变,但是指针指向的数据不可以改变。 指向常量的常指针: const int *const p; //指针不可改变,且指针指向的数据也不可改变。 引用就...
分类:
编程语言 时间:
2015-04-21 00:19:06
阅读次数:
248
1.引用是已经定义变量的别名。必须在申明引用的时候进行初始化。引用更接近于const指针,一旦和某个变脸关联起来就一直效忠于它,不能改变(可以通过初始化来设置引用,但是不能通过赋值来设置)。 2.传引用传递引用和值不同的一点就是,在函数中,传值得话,在函数内部还会创建一个临时的变量,但是传应用的话就...
分类:
其他好文 时间:
2015-04-13 14:27:57
阅读次数:
112
3种与const、指针及指针指向的对象有关的情形:
1.指向常量对象的指针
2.指向某个对象的常量指针
3.指向常量对象的常量指针
在第一种情况中,我们不能修改被指向的对象,但可以使指针指向其他对象:
const char* pstring(“Some text”);
在第二种情况中,我们不能修改指针中存储的地址,但可以修改指针指向的对象:
char* const pstring(“...
分类:
其他好文 时间:
2015-04-11 22:39:23
阅读次数:
132
1.const位于*左侧,则修饰对象;位于*右侧,则修饰指针2.const仅修饰对象时,const对象的指针本身可以改变,即指针地址可改变(指向其它对象);若const修饰指针时,则指针本身不能被改变,但并不限定所指对象的值1 i=0;2 const int *ip=&i;//仅限定对象i3 int...
分类:
其他好文 时间:
2015-04-03 14:48:35
阅读次数:
88
1,使用const 指针;const int * pOne; //指向整型常量的指针,指向的值不能修改;int * const pTwo; //指向整型的常量指针,指向的值可以修改,但该指针不能再指向其他变量;const int * const pThree; //指向整型常量的常量指针summar...
分类:
编程语言 时间:
2015-03-13 17:59:56
阅读次数:
192