- 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++标准输出输出流的头文件
#include3、命名空间的引入#include //c++包含c语言中的标准库时候 #include //c++头文件类似c语言中的stdio.h int main() { return 0; }
//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++基本输入输出头文件
#include2、一般情况包含命名空间
using namespace std;
可以省略但是在使用c语言时必须加上前缀
输出:cout<< C++支持C语言的格式控制字符 输入:cin>>
#include三、新的数据类型 bool类型#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; }
占用内存是一个字节 计算机非零表示成立,只有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四、函数思想 内敛思想inline关键字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,短小精悍 在结构体中或者类种实现的函数默认内敛函数重载
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语言没有的功能和不同之处,后续需要更多的了解
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)