初入C++(一) c++中的一些基础和与c的一些区别
1.定义变量的位置
2.c++中的波尔类型(bool)
#include <iostream>
using namespace std;int main()
{bool a = false;int b = 5;float c = 0.01;char *d = NULL;if (a){cout<<"a = 1"<<endl;}else//(!a){cout<<"a = 0"<<endl;}if (b == 0){cout<<"b = 0"<<endl;}else{cout<<"b != 0"<<endl;}if ((c > -0.000001) && (c < 0.000001)){cout<<"c = 0"<<endl;}else if (c < -0.000001){cout<<"c < 0"<<endl;}else{cout<<"c > 0"<<endl;}if (NULL == d){cout<<"d = NULL"<<endl;}else{cout<<"d != NULL"<<endl;}return 0;
}
3.c中的struct结构体与c++中的class类和对象
#include <iostream>using namespace std;struct student{char *name;int age;float score;
};int main()
{struct student stu1;stu1.name = "xiaoming";stu1.age = 19;stu1.score = 59.8;printf("%s %d %6.3f\n", stu1.name, stu1.age, stu1.score);return 0;
}
显然c++的类和对象更方便,功能也更强大。但是要记牢class的用法,和特点
#include <iostream>using namespace std;class student{
public :char name[24];//char *name;int age;float score;void say(){printf("name:%s\nage:%d\nscore:%6.3f\n", name, age, score);//cout<<"name = "<<name<<"\nage = "<<age<<"\nscore = "<<score<<endl;}
};int main()
{class student stu1;strcpy(stu1.name, "xiaoming");stu1.age = 19;stu1.score = 59.8;stu1.say();return 0;
}
4.在堆上申请空间和释放new和delete
int *p;
p = new int;
char *pstr = new char [50];
delete可以用于释放堆上的空间,语法如下:
delete p;
delete [50] pstr;
5.命名空间
命名空间的概念
C++中采用单一的全局变量的命名空间,如果在一个空间中,两个变量或函数的名字一样,编译的时候就会冲突。命名空间就是为了解决C++中函数变量的命名冲突所采取的一种措施,能够解决多模块协同开发出现变量函数命名的冲突问题。
在这里面可以把命名空间理解成文件夹,如果你在hel1这个文件夹中编辑两个hello.cpp肯定会出问题,但是如果一个在hel1,一个在hel2这个文件夹中p,这个就不会出现冲突。
命名空间的必要性: 当程序比较大的时候,需要多人合作,命名空间就非常必要。
命名空间用namespace定义,格式如下:
namespace 命名空间名
{
命名空间生命内容
}
#include <iostream>using namespace std;namespace nsa{void print(){cout<<"nsa"<<endl;}
}namespace nsb{void print(){cout<<"nsb"<<endl;}
}int main()
{nsa::print();nsb::print();return 0;
}
其中的::是域操作符。
(1)using 声明
using namespace_name::name;
一旦使用using声明,就可以直接引用命名空间中的成员,而不需要再引用该成员的
命名空间。
命名空间std,这是最常用的命名空间,而不需要再引用该成员的命名空间。
#include <iostream>using std :: cin;//using声明,表明要引用标准库std中的成员cin;
using std :: string;//using声明,表明要引用标准库std中的成员string;
using std :: endl;int main()
{string temp;cin>>temp;std :: cout<<temp<<endl;return 0;
}
在using 指令中,using后面必须跟关键字namespace,而且最后必须为命名空间名;
using 声明中,关键字后面没有namespace, 后面必须为命名空间的成员名。
(2)using的作用域
#include <iostream>using namespace std;namespace nsa{int a = 5;
}namespace nsb{float a = 5.55;
}int main()
{{using namespace nsa;cout<<"nsa a = "<<a<<endl;//using指令,使用nsa}{using namespace nsb;cout<<"nsb a = "<<a<<endl;//using指令,使用nsb}return 0;
}
6.函数的重载
#include <iostream>
using namespace std;int max(int a, int b);
int max(int a, int b, int c);
double max(double a, double b);int main()
{int n;int a = 2;int b = 3;int c = 5;double z;double x = 55.5;double y = 66.6;n = max(a, b);cout<<"a = "<<a<<" b = "<<b<<" max = "<<n<<endl;z = max(x, y);cout<<"x = "<<x<<" y = "<<y<<" max = "<<z<<endl;n = max(a, b, c);cout<<"a = "<<a<<" b = "<<b<<" c = "<<c<<" max = "<<n<<endl;return 0;
}int max(int a, int b)
{return a > b ? a : b;
}int max(int a, int b, int c)
{int temp;temp = a > b ? a : b;return temp > c ? temp : c;
}double max(double a, double b)
{return a > b ? a : b;
}
7.带默认值的形参
void func(int a, double b = 5.5, int c = 3);//合法
void func1(int a = 1, double b = 5.5, int c = 3);//不合法
看demo
#include <iostream>
using namespace std;void func(int x, int y = 0, int z = 0)
{cout<<x<<","<<y<<","<<z<<endl;
}int main()
{int x, y, z;cout<<"x,y,z:"<<endl;cin>>x>>y>>z;func(x);func(x, y);func(x, y, z);return 0;
}
8.内联函数inline
如果函数体代码比较多,需要较长的执行时间,那么函数调用机制占用的时间可以忽略;如果函数只有一两条语句,那么大部分的时间都会花费在函数调用机制上,这种时间开销就就不容忽视。
为了消除函数调用的时空开销,C++ 提供一种提高效率的方法,即在编译时将函数调用处用函数体替换,类似于C语言中的宏展开。这种在函数调用处直接嵌入函数体的函数称为内联函数(Inline Function),又称内嵌函数或者内置函数。
#include <iostream>
using namespace std;inline int max(int a, int b);int main()
{int a[10];cout<<"please input 10 numbers :\n"<<endl;int i;for (i = 0; i < 10; i++){cin>>a[i];}int temp = a[0];for (i = 0; i < 10; i++){temp = max(temp, a[i]);}cout<<"the max number of the 10 numbers is "<<temp<<endl;return 0;
}inline int max(int a, int b)
{return a > b ? a : b;
}
说明:
1) 内联函数不能含有循环语句,swtich语句;
2) 内联函数必须在调用之前声明和定义;
3)内联函数不能指定抛出异常类型;
4)inline只是修饰函数向编译器提出内联请求,做不作为内联函数由编译器决定;
初入C++(一) c++中的一些基础和与c的一些区别相关推荐
- HoloLens2 初入——从Lut表中求解相机内参
文章目录 HoloLens2 初入--从Lut表中求解相机内参 引言 HoloLens2 的相机们 基本条件 解畸变 ----------------------------------------- ...
- 初入职场新人一定要知道的五大晋升秘诀
职场如战场.每年有很多人进入职场,就等于是进入了战场.初入职场,工作勤勉是基础,但仅仅这些是不够的,架构师米洛认为还需要注意以下5点,才可迅速融入公司,取悦老板,为将来的加薪升职埋下伏笔. 秘诀一:让 ...
- 【青春须早为,岂能长少年】一个初入职场程序员的阶段总结
作者:陌北有棵树,Java人,架构师社区合伙人! 2019届毕业的小伙伴们,都应该已经入职快两个月了吧,从学校踏入工作,想必都有很多新的感悟和想法吧,我在这里写下我作为新人的的思考和总结,困惑与迷茫. ...
- 「每周论文推荐」 初入深度学习CV领域必读的几篇文章
https://www.toutiao.com/a6718570271269192200/ 很多朋友都希望我们开通论文推荐和阅读板块,那就开吧,此专栏名为<每周论文推荐>.在这个专栏里,还 ...
- 初入android驱动开发之字符设备(一)
大学毕业,初入公司,招进去的是android驱动开发工程师的岗位,那时候刚进去,首先学到的就是如何搭建kernel.android的编译环境,然后就是了解如何刷设备以及一些最基本的工具.如adb.fa ...
- 每一个div元素分析 php,PHP初入,div知识点整理(特效字体等元素的使用整理)...
.nav{ width: 500px; height: 100px; border: 2px solid black; background-image: url(js/QQ图片20170815095 ...
- 【每周论文推荐】 初入深度学习CV领域必读的几篇文章
很多朋友都希望我们开通论文推荐和阅读板块,那就开吧,此专栏名为<每周论文推荐>.在这个专栏里,还是本着有三AI一贯的原则,专注于让大家能够系统性完成学习,所以我们推荐的文章也必定是同一主题 ...
- 初入前端,面对一个项目应注意哪些?
前言: 对于初入职场的前端小白来说,一整个项目来了,顿时感觉压力山大,张皇失措,也总会感到手忙脚乱.其实不用怕,拆分步骤,把每个步骤做好,做细,一切都迎刃而解,犹如顺藤摸瓜般畅快淋漓. 目录: 概念的 ...
- python while循环if_初入python 用户输入,if,(while 循环)
python 基础 编译型: 一次性将所有程序编译成二进制文件. 缺点:开发效率低,不能跨平台 优点:运行速度快. :c ,c++语言 等等.... 解释行:当程序执行时,一行一行的解释. 优点:开发 ...
最新文章
- ant引入html页面,antd引入普通html使用,将ant Design本地化
- c++ 宽搜(倒水)
- Composer自动加载(一)
- 「leetcode」C++题解:15.三数之和 /3Sum 方法1:哈希法,方法2:排序+双指针,详细注释
- 新版 AS9100D:2016航空航天质量管理体系标准变化内容
- 程序员教你不背单词学英语!流利英语一周成!!!
- MYSQL基础教程书籍
- 自制“营销号视频生成器”
- autocad2007二维图画法_CAD中如何绘制二维图形
- 74ls163是同步清零吗_74LS163是具有同步清零功能的十六进制计数器,要
- 申论(基础题)之扫清阅读障碍和提取障碍
- python从文件中读取数据_【Python】从文件中读取数据
- java变量无法解析出现的原因_不明白为什么这个变量无法解析为一个类型? (JAVA)...
- linux 证书文件权限,Linux运维之道之admin1.4(权限和归属,LDAP认证)
- 《矩阵理论》大萌课程笔记 - 线性空间与子空间
- Swagger2常用注解说明
- Win10中用VS2019编译live555
- mysql dump -a -b_MySQL数据导出工具 mysqldump
- 关于计算机应用英语作文,计算机应用与办公自动化专业英文简历模板
- Node Sass does not yet support your current environment: OS X Unsupported architecture (arm64)
热门文章
- 【触觉AI】麻省理工研发带550个传感器的触觉手套,通过触摸识别物体|湾区人工智能...
- 【量产】波士顿动力机器狗,当警犬不错,上战场。。。
- CPU版本文本分类代码 寒老师
- Springboot整合一之Springboot整合RabbitMQ
- python入门-廖雪峰 Python教程
- 蔚来难迎“第二增长曲线”?
- 加投35000瓶原价茅台 天猫双11今晚8点开售
- 自行更换iPhone 13屏幕会导致Face ID失效?苹果将发布软件更新解除限制
- 一加Nord 2外观渲染图曝光:小号“一加9” 价格有惊喜
- 超70家影视传媒单位联合500余位艺人倡议:立即清理未经授权短视频