C++技术点积累(9)——补充
来源:互联网 发布:wow 国服 mac 编辑:程序博客网 时间:2024/05/29 03:49
1、三目运算符
C语言中的三目运算符:
#include"stdio.h"void main(){int a = 10;int b = 15;int z = (a > b ? a : b);printf("z:%d", z);(a > b ? a : b) = 20; //error:错误1 error C2106: “=”: 左操作数必须为左值printf("z:%d", z);}修改:
#include"stdio.h"void main(){int a = 10;int b = 15;int z = (a > b ? a : b);printf("z:%d\n", z);*(a > b ? &a : &b) = 20; //error:错误1 error C2106: “=”: 左操作数必须为左值printf("z:%d\n", *(a > b ? &a : &b));}
C++中的三目运算符:
#include<iostream>using namespace std;void main(){int a = 10;int b = 15;int z = (a > b ? a : b);cout << z << endl;(a > b ? a : b) = 20; //成功cout << (a > b ? a : b) << endl;}结论:在C语言中,三目运算符的结果不能当左值,表达式返回的是一个值。而在C++中,三目运算符返回的不是一个值,而是一个变量的本身,也就是说返回的是一个变量的内存首地址。
2、const——http://blog.csdn.net/songshimvp1/article/details/48163495
3、define和const
void DEFINE(){ #define a 10cout << a << endl;}void DEFINE2(){cout << a << endl; //成功}void CONST(){const int b = 15;cout << b << endl;}void CONST2(){cout << b << endl; //错误1error C2065 : “b” : 未声明的标识符}另外,#define缺乏类型检测机制!
小提示:不要在#define后面手残的加“;”,否则会出现“错误1 error C2143: 语法错误 : 缺少“;”(在“<<”的前面)”。
4、new和delete
new:不光分配内存,而且会调用对象的构造函数;
delete:不光释放内存,而且会调用对象的析构函数;
0 0
- C++技术点积累(9)——补充
- C++技术点积累(1)
- C语言技术积累
- C++技术点积累(2)——拷贝构造函数、深拷贝、浅拷贝
- C++技术点积累(3)——对象初始化列表、运算符重载
- C++技术点积累(4)——继承、多态、抽象类
- C++技术点积累(5)——泛型编程(函数模板、类模板)
- C++技术点积累(6)——异常处理、输入和输出流
- C++技术点积累(7)——STL之容器汇总
- C++技术点积累(8)——STL之算法汇总
- MFC编程小经验点积累(以后待补充)
- 技术点汇总(待补充)
- 【Cocos学习】平时技术点积累
- C# 基础技术积累——反射
- 技术积累 — 加权平均值滤波算法
- 技术积累 — IIC之深入理解
- 技术积累-1( C技巧/GLib数据结构 )
- 一切成功源于积累——20150401 黄金 2800点
- 动态横向数据调用——动态组件绑定
- libvirt(virsh命令介绍)
- 很好很好的select服务器程序,可直接运行,新手福利测试修改
- 我的第一篇博客
- C#combox结合存储过程捆绑数据
- C++技术点积累(9)——补充
- 数据库技术_事务(0001)_冲突情况与隔离级别
- AngularJs核心概览
- 关于windows和ubuntu双系统引导修复的问题
- Qt Creator仿VS主题
- HDU 2041 超级楼梯(递推求解)
- RTMP 抓包分析
- UIAlertView的自动消失、手动消失、自定义消失
- Intel MCE CMCI (三) 系统软件中CMCI的相关实现