C&C++--day1
来源:互联网 发布:光大银行 大数据 编辑:程序博客网 时间:2024/06/06 07:27
1、C语言和c++的区别?
(1)C语言面向过程的机制;
(2)C++可用于面向对象的的程序设计,也支持面向过程的结构化设计;
(3)C++是针对开发大规模的程序提出的,目的是提高软件开发效率;
(4)C++是从C语言中开发而来,Java和c#都是从C++发展而来;
(5)c++包含C语言的部分;
2. 头文件(带.h还是不带)
如果是用C库的函数,要带.h
早期的C++库的函数,要用.h
如果是现在C++的函数,只能用不带.h
如果要使用C库里的函数接口printf()...可以把头文件<stdio.h>写成<cstdio>或<string.h>-><cstring>
3.C++命名空间
c++所有
using namespace std; //标准命名空间
namespace std
{
cout
cin
........
}
自定义命名空间
namespace sp1
{
int flag; //不能重名
namespace ssp1
{
int arry;
}
.......
}
namespace sp2
{
int flag;
}
int main()
{
sp1::flag = 1;
sp2::flag = 2;
std::cout<<"flag = "<<sp2::flag<<std::endl;
}
三种表达方式
std::变量名
using std::xxxx
using namespace std; //常用
4、强制类型转换
(1)(数据类型)(表达式)----C语言风格
(2)数据类型(表达式)-----c++新增
double x=2.5,y=4.7;
int a=25,b;
b=a+(int)(x+y);---c
y=double(5%3);---c++(类似函数调用)
5、新增动态内存分配的运算符
C语言中由malloc()函数分配内存,由free函数释放内存空间
(1)分配内存用new运算符,释放空间用delete运算符
(2)格式:
指针变量 = new 数据类型;
指针变量 = new 数据类型[数据大小];
int *p1,*p2,*p3;
p1=new int;
p2=new int[5];
p3=new int(5);//分配int类型的空间大小,并初始化为5;
(3)delete 格式
delete 指针变量
delete p1;
6、新增作用域运算符::
#include<iostream>
using namespace std;
float a=2.4;
int main()
{
int a= 8;
cout<<a<<endl;//a为局部变量
cout<<::a<<endl;//::a为全局变量
}
#include<iostream>
//这里不写使用的命名空间
float a=2.4;
int main()
{
int a= 8;
std::cout<<a<<std::endl;//a为局部变量
std::cout<<::a<<std::endl;//::a为全局变量
}
std::表明使用命名空间std中定义的标识符
7、变量的引用
(1)引用的作用:为一个变量起一个别名,例如:
int a;//定义a是整型变量
int &b=a;//声明b是a的引用,b是a的别名
a=20;
cout<<b<<endl;
(2)声明变量b为引用类型,不另外开辟内存单元来存放b的值
b和a占用内存中的同一个存储单元,他们具有同一个地址;
a或者b的作用相同,都是代表同一个变量;
引用可以理解为:是变量b具有变量a的地址;
(3)&是引用声明符,不代表地址。
(4)主要用于扩充函数传递数据功能
#include<iostream>
using namespace std;
void swap(int &a,int &b);
int main()
{
int i,j;
i=3,j=5;
swap(i,j);
cout<<"i="<<i<<" "<<"j="<<j<<endl;
return 0;
}
void swap(int &a,int &b)
{
int temp;
temp=a;
a=b;
b=temp;
}
输出结果是:i=5 j=3
总结:使用引用使得形式参数和实际参数达到传递递值得效果。
int gol;
int &add(int a,int b)
{
//int gol; 错误的定义变量
gol = a+b;
return gol;
}
如果声明返回值为引用,则返回的变量必须是全局变量,若是局部变量,函数执行完之后会被free掉,局部变量里所存储的数据会被清除掉。
int main(void)
{
int ret = add(2,3);
cout<<"ret = "<<ret <<endl;
}
输出结果:ret=3
若返回的类型是 int add(int a,int b),那返回的值会临时存放在一个栈缓冲区内,主函数调用时会从缓冲区中读取内容;然而返回的声明为引用时是不占用存储空间,所以编译的时候会报错。
8、常变量:
在定义变量时,加上关键字
(1)const,则变量的值在程序运行期间不能改变,例如:
const int a=3;//必须给变量初始化
const int b=3+6,c=3*cos(1.5);
(2)宏定义VS常变量
#define NEICE 30
不过c++更加常用第一种const
9、C++输入和输出用“流”(stream)的方式实现
cin>>b的执行->把键盘输入的值通过提取运算符>>送入到输入流对象中
cout<<b的执行->把内存b的值通过插入运算符<<送入到输出流流对象中
流对象cin、cout和流运算符的定义存放在C++的输入输出流库iostream中,要在程序中使用cin、cout和流运算符,必须先#include<iostream>
(1)格式:
cout<<表达式<<表达式<<....<<表达式n;
cin>>变量1>>变量2>>....>>变量n;
(2)<<和提取运算符>>的优先级与结合性?
int a=1,b=4,c=8;
cout<<a,b,c; //输出1 比逗号的优先级高
cout<<a,b,c<<endl; //出错,如何理解?
错误来源于c<< ,因为c是一个整型变量,不是输出流的一个对象
cout<<a+b+c<<endl; //输出13,建议(a+b+c)
- C#day1
- C&C++--day1
- Day1 - C - Plucking fruits
- C语言day1
- C语言复习day1
- C语言:Day1~Day4
- C语言实践--day1
- C day1 数据类型1
- Objective-C:Day1~Day2
- C语言学习日志 day1
- C语言学习笔记及感想 day1
- 【五校联考6day1】c
- ICPCCamp Day1 C. City United(脑洞状压dp)
- C语言day1(数据类型、变量本质)
- day1 手癌菜鸟 linux环境下学习C语言
- NOI 2015 day1 t2 软件包管理器 题解&代码(c++)
- jzoj 4243. 【五校联考6day1】c 分块
- 学习日记 – 《C陷阱与缺陷》 – Day1
- 基于qt和opencv3实现机器学习之:利用逻辑斯谛回归(logistic regression)分类
- ubuntu将网址在桌面创建快捷方式双击打开
- 如何将写好的驱动程序编译进内核
- NYOJ-303-序号互换(第四届河南省程序设计大赛A题(模拟))
- 自己犯的错误
- C&C++--day1
- 大型网站架构系列:缓存在分布式系统中的应用(二)
- 重温Volley源码(三):添加Cookie或Https的能力
- AVPlayer的使用
- 有符号数与无符号数的加减法
- Oracle运行mybatis动态sql会抛一个异常
- mybatis中#{}与${}的差别(如何防止sql注入)
- 【Centos7】YUM Repository安装MySQL
- JNI学习(二)调用java数据、字符串、数组,对象以及类