从C语言到C++的过渡(需有C语言基础)

如果有可以补充或者写错的,希望大家能指出来,蟹蟹~


0.可以这么理解:

C语言与C++的区别


1.头文件及后缀名

C语言C++
stdio.hiostream
math.hcmath
string.hcstring
stdlib.hcstdlib

C语言: .c
C++: .cpp


2.命名空间

C++特有的
使用命名空间:using namespace
命名空间:std
作用域运算符 (::)

 #include<iostream>
 //第一种使用命名空间
 using namespace std;
 int main()
 {
 	cout<<"Hello World!"<<endl;
 	return 0; 
 }
  
 //第二种
  int main()
  {
  	std::cout<<"Hello World!"<<std::endl;
 	return 0;
 }
 

ps:
1.cout在C++中用于输出,相当于printf。endl在C++中用于换行,相当于 \n 。
2.作用域运算符作用挺多的,这里先不介绍了。


3.基本数据类型

C++比C语言多一个数据类型:bool(布尔类型)
bool只有两个值!(用于区分逻辑的真假和数字1,0)


  bool a;
  a = ture;   //相当于真 ‘1’
  a = false;  //相当于假 ‘0’


4.输入输出

C语言C++
输入scanfcin
输出printfcout
换行\nendl
 #include<iostream>
 using namespace std;
 int main()
 {
 	int n,m;
 	//输入n
 	scanf("%d", &n);
 	cin >> m;
 	//输出n
	printf("%d\n", n);
	cout << m << endl;
	  
	return 0;
}

ps:
1.在C++中依旧可以使用 scanf 和 printf ,并且scanf,printf 要比 cin,cout更快。(如果程序运行超时了,可以换成scanf,printf)
2.用scanf 和 cin 输入字符串时,与空格截至。如果要输入带有空格的字符串,可以用gets或者getline(cin,str); 或者 cin.getline(str); 。

  string str1,str2;      //一种可以不用定义长度的字符串类型
  
  getline(cin,str1);     //输入字符串
  cin>>str2;             
  
  puts(str1);           //输出
  puts(str2);
 输入:hello word!
 	   hello word!
 输出:hello word!
	   hello

5.返回值

没指定返回值情况下:
C语言:默认返回 int 类型。
C++:默认返回 void 类型


6.参数列表

当调用函数的参数为空的时候:
C语言:实参可以有任意多个。

void add(){
}
add(1,2,3);

C++:实参个数只能为0。

void add(){
}
add();

7.动态内存分配

开辟内存释放内存方式
C语言mallocfree函数
C++newdelete运算符
 #include<iostream>
 using namespace std;
 int main()
 {
 	int *p;
 	p = new int;   //使 p 指向 int 空间
 	delete p;      //释放空间
 	return 0;
 } 	

8.结构体

创建一个结构体

C语言C++
struct Std zhou;Std zhang;

9.条件运算符

C语言:


 #include<stdio.h>
 int main()
 {
 	int a=3,b=7;
 	printf("%d\n",a>b?a:b);
 	return 0;
 }

  输出:7

C++:
判断后的变量可以被赋值

#include<iostream>
using namespace std;
int main()
{
	  int a = 3,b = 7;
	  a> b ?a: b = 10;     //判断的那个变量被赋值为10
	  cout << b << endl;
	  return 0;
 } 

  输出:10

10.for循环中的 i 的定义

C语言中,i 必须在for之前定义。

 int i;
 for(i=0;i<10;i++){
 		......
 }

C++ 中可以这么定义:
(在for循环中定义 i 可节省内存,当for循环结束,i 的所占内存也就被释放了)

 for(int i;i<10;i++){
 		......
 }

11.强制转换

C语言中:

 	double  a;
 	int b = 2, c = 5;
 	a = (double)b /c;

C++ 中:

 	double  a;
 	int b = 2, c = 5;
 	a = double b /c;

12.变量的引用

在这一部分,& 作为“引用声明符”。
简单来说,变量的引用就是给变量起一个别名

 #include<iostream>
 //第一种使用命名空间
 using namespace std;
 int main()
 {
 		int  a = 7;
 		int  &b = a;
 		b = 14;
 		cout<< a <<endl;
 		return 0; 
 }
  
	输出:14;

注意:
1.声明一个引用,并不会开辟空间,b 和 a 都代表同一变量单元。
2.声明引用时一定要初始化
3.声明一个引用后,在这个函数执行期间,不可以再作为其他变量的别名
4.不能建立void型数组的引用。

作用
1.传值方式调用

#include <iostream>
using namespace std;
void swap(int &a,int &b)   //变量的引用  如果void swap(int a,int b)这样写,将不能实现交换
{                         //将输出 7 14
   int temp;
   temp = a;
   a = b;
   b = temp;
}

int main()
{
   int a = 7, b = 14;
   swap(a, b);
   cout << a <<" "<< b << endl;
   return 0;
}

	输出:14 7

2.引用方式调用

#include <iostream>
using namespace std;
void swap(int *a,int *b)   
{                         
   int temp;
   temp = *a;
   *a = *b;
   *b = temp;
}

int main()
{
   int a = 7, b = 14;
   swap(&a, &b);
   cout << a <<" "<< b << endl;
   return 0;
}

	输出:14 7

13.内联函数

关键字:inline

作用
1.减少函数调用成本。
2.空间换取时间。

例子:

 #include<iostream>
 using namespace std;
 //内联函数
 inline int Max(int a,int b,int c){
 	if(b>a) a=b;
 	if(c>a) a=c;
 	return a;
 }
 
 int main()
 {
 	int a=3,b=5,c=7,max;
 	max=Max(a,b,c);
 	cout<<max<<endl;
 	return 0;
 }

	输出:7

注意事项
1.内联函数可节省运行时间,但是增加了目标代码的长度(代码也是占内存的)。
2.内联函数中不能包含太复杂的语句,例如 for , if , switch 等语句。
3.内联函数比较灵活,并不是一个指令性的函数,只是程序员对编译系统的一种建议,不一定会执行。
4.内联函数适用于高频率使用,但代码很短的函数(最好不超过5行)。
5.含有递归的调用函数不可以设置成内联函数。
6.内联函数要在被调用之前定义。


14.带默认参数的函数

例子:

#include<iostream>
using namespace std;

int max(int  a = 3,int  b = 5,int  c = 7)      //a,b,c均带有默认值
{
 	if(b>a) a=b;
 	if(c>a) a=c;
 	return a;
 }

int main()
{
	int a = 100int b = 200;
	cout << max() << endl;      //第一种 无具体实际参数,使用默认值计算
	cout << max(a) << endl;       //第二种 有一个实际参数,a不使用默认值,b 和 c使用默认值
	cout << max(a,b) << endl;
	return 0;
}
	输出:7
		 100
		 200

注意事项
1.声明函数时,可以给形式参数初始化一个默认值。调用时,如果没有具体的实际参数,使用默认值进行计算。
2.调用函数时,所给的实际参数的最低个数 = 形式参数的个数 - 默认参数的个数。
3.若形式参数有一部分初始化默认,有一部分不初始化默认。默认值要从最右边放起。


15.函数重载

(大致地提一下,这部分内容没有那么简单。)
作用:方便处理和实现功能相同,形参列表(数据类型,参数个数,参数顺序)不同的问题。
例子:

#include<iostream>
using namespace std;
int add(int a,int b,int c){       //有3个参数 
	int num;
	num=a+b+c;
	return num;
}
long add(long a,long b){          //数据类型不同 
	long num;
	num=a+b;
	return num;
}
double add(double a,double b){
	double num;
	num=a+b;
	return num;
} 
int main(){
	int a=3,b=7,c=8;
	long d=1000,e=2000;
	double f=1.3,g=2.8;
	
	cout<<add(a,b,c)<<endl;
	cout<<add(d,e)<<endl;
	cout<<add(f,g)<<endl;
	return 0;
} 
输入:18
	  3000
	  4.1

注意事项
1.函数名相同,但是参数数据类型,个数,顺序至少有一个不一样。
2.函数重载不能与带默认值函数起冲突。

int add(int a,int b) 
int add(int a,int b,int c=3)      //起冲突了

3.返回值类型并不能决定是否是函数重载。
4.运算符重载:
&:取地址运算符;按位与运算符;引用。
<<:cout<< ;向左移。


16.函数模型

(大致地提一下,这部分内容没有那么简单。)
作用:当运用函数重载需要过多的函数,那么当个参数个数相同时,可以使用函数模型来简化程序。
例子:

#include<iostream>
#include <string.h>
#include <assert.h>
using namespace std;

template <typename T1>    //T1为虚拟数据类型
T1 add(T1 a,T1 b,T1 c){
	return a+b+c;
}
int main(){
	int a = 3, b = 7, c = 8;
	long d = 1000, e = 2000, f = 3000;
	double g = 2.8, h = 1.3, i = 3.6;
	cout << add(a,b,c) << endl;    //三个数都是int类型
	cout << add(d,e,f) << endl;    //三个数都是long类型
	cout << add(g,h,i) << endl;    //三个数都是double类型
	return 0;
} 
	输出:18
		  6000
		  7.7

注意事项
1.建立一个通用函数,函数类型和参数类型可以不指定,使用一种虚拟的类型。
2.凡是函数体相同的多个函数,都可以使用函数模型。
3.typename指数据类型模板;class指类模板。

——————————————————结束符——————————————————————
这个只是大致上的总结,有很多地方并不全面(12-16)。如果有写错的地方,欢迎大家指出。蟹蟹~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值