常量指针: const int *p = &a; 或者 int const *p = &a; *p是常量,不能将*p作为左值进行操作。但指针p还是一个变量,它的内容存放常量的地址,所以先声明常量指针再初始化是允许的,指针也是允许修改的 指针常量: int * const p = &a; 指针本身是一 ...
分类:
其他好文 时间:
2016-09-24 17:29:12
阅读次数:
141
数组与指针的区别 1.数组与指针的定义 指针是变量,存储的是一个地址,用来间接访问数据,在32位系统下占用4个字节。指针可以指向任何内存空间,但不是任何内存空间都可以通过指针去访问(不能访问寄存器)。 数组是标识符且不占用存储空间,类似于常量,因此数组名不能作为左值。 2.extern数组与指针 先 ...
分类:
编程语言 时间:
2016-09-22 21:08:59
阅读次数:
163
stout中大量使用了c++11的特性,而c++11中move和forward大概是最神奇的特性了. 直观理解:左值在等号左边,右值在等号右边 深入理解:左值有名称,可根据左值获取其内存地址,而右值没有名称,不能根据右值获取地址。 2. 引用叠加规则 左值引用A&和右值引用A&& 可相互叠加 举例示 ...
分类:
编程语言 时间:
2016-09-22 01:18:06
阅读次数:
237
1、 先来个例子 调用如下: 2、 那么,如果两个或多个参量,加入条件运算符如下: 再如之前一样调用,会是什么结果呢? 结果编译没通过,提示:expression must be a modifiable lvalue (表达式必须是一个可修改的左值). 为什么出现这个错误呢? 原来,DATA(n) ...
分类:
其他好文 时间:
2016-09-13 20:39:57
阅读次数:
170
1、= ( ) [ ] ->运算符必须是成员函数,是因为是左值操作符; 2、二元运算符建议用友元函数的原因是碰到内置类型数值放前,与对象相加减时,成员函数不支持,如:A a;1+a,得把1转换成A,再调用operator+,如果是成员函数就会有错误,无法调用; 运算符 建议使用 所有一元运算符,如+ ...
分类:
其他好文 时间:
2016-09-01 20:09:40
阅读次数:
144
左值和右值的区别:左值就是在赋值中可以放在赋值操作符两边的值,比如: int a = 1; double b = 2.0 a = b; b = a; 这里a和b都是左值,一切变量都是左值,但const量是例外。 而右值则是只可以放在赋值操作符右边的值,比如: int a = 0; char *b = ...
分类:
编程语言 时间:
2016-08-29 06:50:00
阅读次数:
251
例子: int i =10; int j = i; //1 int k = i; //2 1、2两句中,i 没有被用作左值,这时编译器认为i 的值没有发生变化, i赋值给j后没有被释放掉,继续直接赋值给k。 例子: volatile int i = 10 ; int j = i; int k = i ...
分类:
其他好文 时间:
2016-08-21 21:16:00
阅读次数:
145
指针的算术运算符是指针和数组之间的一种关联,但不是唯一关联: 可以使用数组名作为指向数组第一个元素的指针,但是不可以给数组名赋新的值。 但是试图使数组名指向其他地方是错误的: 会发生下面的报错,表达式必须是可修改的左值。 如果需要可以把数组名赋值给真正的指针变量: ...
分类:
编程语言 时间:
2016-08-15 22:19:22
阅读次数:
164
在四元数插值时,准确比较插值是否完成或者即将完成,可以使用四元数点乘的接口 最后点乘结果会不断接近-1(左值右值对调也是-1) 脚本: ...
分类:
其他好文 时间:
2016-08-15 22:18:04
阅读次数:
150
第四章 表达式和运算符 1 new调用构造函数的过程 a 创建一个新的空对象 b 设置空对象的_proto_指向构造函数原型prototype c 将这个新对象当做this的值来调用构造函数 d 如果构造函数不返回一个对象值,则返回新对象 2 左值:表示存储在计算机内存的对象。 3 除数为0的运算结 ...
分类:
Web程序 时间:
2016-07-30 12:10:22
阅读次数:
201