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)


0 0
原创粉丝点击