2021-11-13

2021-11-13,第1张

2021-11-13 c语言与c++的区别

文章目录
  • c语言与c++的区别
  • 前言
  • 一、头文件与命名空间的不同
    • 1、创建源文件
    • 2、包含头文件的方式
    • 3、命名空间的引入
  • 二、基本输入输出
    • 1、包含C++基本输入输出头文件
    • 2、一般情况包含命名空间
    • 3、输入输出
  • 三、新的数据类型
    • bool类型
    • 指针NULL
    • 引用类型
    • 引用一般用在哪些地方
    • 不能返回局部变量引用
  • 四、函数思想
    • 内敛思想inline关键字
    • 函数重载
    • 函数缺省
  • 总结


前言

在初步学习完C语言后学习C++,虽然两者语言有许多相似的地方,但是也有很多不同的地方,在学习C++初步阶段现将它们进行简单的区分


提示:以下是本篇文章正文内容,下面案例可供参考

一、头文件与命名空间的不同 1、创建源文件
创建源文件C语言是.c文件而c++源文件是.c++文件,头文件与c语言相同仍然是.c文件
2、包含头文件的方式

包含自己头文件没有任何的区别#include “myhead”
包含库目录:
C语言:可以采用采用原来的方式,可以C++的包含方式,去掉.h加个C
iostream:C++标准输出输出流的头文件

#include 
#include 	//c++包含c语言中的标准库时候
#include 	//c++头文件类似c语言中的stdio.h
int main()
{

	return 0;
}
3、命名空间的引入
//1.基本创建空间的方法
namespace 空间名
{
	int a;
	void pirnt(){}
}
//2.学会访问命名空间中的东西
//2.1用空间名限定去访问
int main()
{
	空间名::a=1001;
	空间名::print();
	return 0;
}
可以增加标识符的使用率,c语言同一个作用域下不允许相同的标识符作用域分辨符::
空间名限定,类型限定
用来表示全局量
using语法,可以省略前缀的写法
using namespace空间名;	//可以省略当前的空间名
//但只在当前作用域下有效
空间名的嵌套与空间内容的访问
namespace A
{
	int a=1;
	namespace B
	{
		int b=1;
	}
}
	A::B::bb=111;	//套娃
	using namespace A::B; 
	b=222;
	
二、基本输入输出 1、包含C++基本输入输出头文件
#include   
2、一般情况包含命名空间

using namespace std;
可以省略但是在使用c语言时必须加上前缀

3、输入输出
输出:cout<<
	C++支持C语言的格式控制字符
输入:cin>>
#include 
#include 
//using namespace std;  一般都是写在这里,避免std的前缀使用
void testCinCout() 
{
	using namespace std;
	//1.基本变量打印不需要格式控制
	cout << "aaan";
	char str[] = "aaan";
	cout << str;
	int a = 1;
	float b = 1.1;
	cout << a;
	cout << b;
	cout << "n";
	//2.如何一次性打印多个数据
	cout << a << "t" << (int)b << "n";
	cout << a << "t" << int(b) << "n";
	//C语言运算符的隐式转换都是一样的
	int aa = 1.111;
	//3.C++换行  endl替换n的作用
	cout << "姓名" << endl;
	cout << "年龄" << endl;

	int iNum = 0;
	float fNum = 0.0f;  //默认小数是double
	//unsigned int uNum = 1u;
	//long int lNum = 1L;
	cout << "请输入一个整数,一个浮点数,一个字符串:";
	//一个一个处理
	//cin >> iNum;
	//cin >> fNum;
	//cin >> str;
	//一次处理多个
	cin >> iNum >> fNum >> str;
	cout << iNum << "t" << fNum << "t" << str << endl;
}

//输入的几个问题
//1.字符串输入空格问题
void  testStr() 
{
	using namespace std;
	char str[10] = "";
	cin >> str;			//不带空格的输入
	cout << str;
	//fflush(stdin)					//已被淘汰
	//setbuf(stdin,NULL);
	while (getchar() != 'n');		//字符和字符串输入前,做了输入
	char c;
	cin >> c;
	cout << c;
	//接受空格的输入--->了解
	cin.getline(str, 10);		//gets_s(str, 10);
	cout.write(str, 10);
}
//2.关于命名空间std
void testNamespace()
{
	//当不加using namespace  std;
	std::cout << "没有写using namespace std" << std::endl;
	std::string str = "aaa";
}

int main() 
{
	testStr();

	return 0;
}
三、新的数据类型 bool类型
占用内存是一个字节
计算机非零表示成立,只有0或者指针空表示不成立
 一般充当函数返回值,或者开关正常输出是0和1
 C++专有的赋值方式,false和true
指针NULL
指针的NULL C++种改为nullptr
引用类型
理解为起别名
基本引用
类型名& 别名=要起别名的东西;
int a=1;
int& b=a;  //a有另一个名字叫b ,a就是b,b就是a
常引用
类型名&& 别名=右值
int&& a=1;   //1就是a ,a就是1
引用一般用在哪些地方
 函数参数(防止拷贝产生)
函数返回值(增加左值使用)
不能返回局部变量引用
#include 
using namespace std;
void  testBool() 
{
	bool bNum = 1234;
	cout << bNum << endl;
	bNum = false;
	bNum = true;
	cout << bNum << endl;
	//boolalpha 用true和false方式打印bool类型
	cout << boolalpha << bNum << endl;
}
void testnullptr() 
{
	int* p = nullptr;   //NULL
	char* pc = NULL;
}
void printStr(const char* str) 
{
	cout << str << endl;
}

void testQuote() 
{
	//1.什么是起别名
	int 搜索 = 1;
	//类型 & 别名=要起别名的东西
	int& 百度 = 搜索;  //百度就是搜索的别名
	百度 = 777;
	cout << 搜索 << endl;
	//2.C++种常量要求更严格
	//想要变量和常量,就必须用const修饰
	printStr("6666"); //形参必须要有const 
	char str[] = "6666";
	printStr(str);
	//3.常引用
	//int& x = 1;		//直接报错,C++对const要求更严格
	int aa = 1;
	const int& x = 1;	//第一种写法:const修饰
	const int& x2 = aa;
	//右值引用,只能给右值起别名
	int&& xx = 1;		//常量是右值(运算符的右边)
	//int&& xx2 = aa;   //右值引用只能给右值起别名
}
void modifyA(int a)
{
	a = 1001;
}
void modifyB(int& a)     //int& a=实参;
{
	a = 1001;
}
void swap(int& a, int& b) 
{
	int temp = a;
	a = b;
	b = temp;
}
int g_num = 1001;
void modifyPointA(int* p) 
{
	p = &g_num;
}
void modifyPointB(int*& p)  //int*& p=实参
{
	p = &g_num;
}

//右值引用
void printRightValue(int&& a) 
{
	a += 11;     //可以增加一个可以修改的功能
	cout << a << endl;
}
void printRight(const int& a) 
{
	//a += 11;   //常饮用不能修改
	cout << a << endl;
}
int getData() 
{
	return g_num;
}

int& getValue() 
{
	return g_num;
}


void useQuote() 
{
	int aa = 1;
	modifyA(aa);		//拷贝本
	cout << aa << endl;
	modifyB(aa);		//任何传参都是赋值的方式传参
	cout << aa << endl;
	int bb = 22;
	swap(aa, bb);
	cout << aa << "t" << bb << endl;
	int pa = 1008;
	int* p = &pa;
	cout << "当作函数参数" << endl;
	modifyPointA(p);
	cout << *p << endl;
	modifyPointB(p);
	cout << *p << endl;
	printRightValue(11);
	printRight(11);
	//返回值就是一个值,这个值只能是右值
	//getData() = 1001;  错误
	getValue() = 0;		//返回引用表示返回变量本身
	cout << g_num << endl;
}




int main() 
{
	//testBool();
	testQuote();
	useQuote();
	return 0;
}
四、函数思想 内敛思想inline关键字
 什么样的函数可以成为inline,短小精悍
在结构体中或者类种实现的函数默认内敛
函数重载
C++允许同名不同参数函数存在
 参数数目不同
 参数类型不同
参数顺序不同(一定建立在不同类型的基础上)
函数缺省
 C++中允许给函数形参初始化
 缺省顺序 必须从右往左缺省,缺省的参数中间不能存在没有缺省的
 没有参入参数,使用的是默认值
#include 
using namespace std;
inline int  Max(int a, int b) 
{
	return a > b ? a : b;
}
void print(int a) 
{
	cout << a << endl;
}
void print(int a, int b) 
{
	cout << a + b << endl;
}
//和上面不是顺序不同
//void print(int b, int a) 
//{
//	cout << a + b << endl;
//}
void print(int a, char b) 
{
	cout << "int,char" << endl;
	cout << a + b << endl;
}
void print(char a, int b)
{
	cout << a + b << endl;
}
//函数缺省
void printData(int a=1, int b=2, int c=3, int d=4) 
{
	cout << a + b + c + d << endl;
}
int main() 
{
	print(1, 'A');		//重载调用,优先调用类型一致
	//缺省其实是重载的一种综合写法
	printData();			  //a=1 b=2 c=3 d=4
	printData(10);			  //a=10 b=2 c=3 d=4
	printData(10, 20);		  //a=10 b=20 c=3 d=4
	printData(10, 20, 30);	  //a=10 b=20 c=30 d=4	
	printData(10, 20, 30, 40);//a=10 b=20 c=3 d=40
	return 0;
总结

通过初步接触C++之后,了解了C语言与C++之间的一些不同之处,在逐渐深入之后可能会遇到C语言没有的功能和不同之处,后续需要更多的了解

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5504049.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存