基于C语言的C++学习笔记

    技术2025-07-15  11

    基于C语言的C++学习笔记

    C++语法的拓展输入输出的不同类型的增加申请内存不同C++的引用类型 C++函数的拓展函数的默认参数

    C++语法的拓展

    输入输出的不同

      就输入输出而言c语言用的是传统的stdio.h标准输入做到的,实现的方法是通过不定参数达到格式化输出的目的,由于面向过程的变成思路导致它非常的繁琐

    #include <stdio.h> int main() { int a; scanf("%d",&a); printf("a = %d\n",a); return 0; }

      c++则不同,初学者一般都会用iostream这个标准输入输出流,有趣的是c++头文件没有.h,取而代之的是引入了命名空间这个概念,我们可以通过引入命名空间来引入头文件中的输入输出流,这里的输入输出流也非常灵活,结尾的endl取代了c语言中的换行

    #include <iostream> using namespace std; int main() { int a = 0; cin >> a; // cin理解成键盘,值由键盘产生流向a cout << "a = " << a << endl; // cout理解成屏幕,数据流向屏幕 return 0; }

    实际上C语言的printfC++也可以用只是cout更简单

    类型的增加

      相比c语言的类型c++增加了string和bool类型   其中string类型用于创建字符串,代替了c语言中用字符char的数组的形式去装字符串

    //c语言风格的字符串 int main() { char str1[] = "hello world"; printf("%s\n",str1); return 0; } //c++风格的字符串 int main() { string str2 = "hello world"; cout << str2 << endl; return 0; }

      至于布尔类型就是true和false,本质上true是1 false是0。布尔类型占用的空间实际上很容易被误解成只占用一位,实际上占用一个字节它的大小和char相同,所以实际上c可以通过枚举类型达到c++的布尔类型效果

    #include <stdio.h> typedef enum { true = 1, false = 0 }bool; // 用枚举类型实现布尔类型 int main() { bool a; a = true; printf("a = %d", a); return 0; } #include <iostream> using namespace std; int main() { bool a; a = true; cout << "a=" << a << endl; return 0; }

    申请内存不同

      用户申请内存上来说c语言就显得比较繁琐,c语言借助stlib.h里的malloc函数去申请内存:

    #include <stdio.h> #include <stdlib.h> int main() { char* p; p = (char*)malloc(10);//向内存申请空间 for (int i = 0; i < 10; i++) { p[i] = 1; } for (int i = 0; i < 10; i++) { printf("%d",p[i]); } free(p);//释放p中指的地址的内存 return 0; }

      相比于c c++使用了关键词new去代替的原有的类型

    #include <stdio.h> int main() { int* p = new int(10); for (int i = 0; i < 10; i++) { p[i] = 1; } for (int i = 0; i < 10; i++) { printf("%d",p[i]); } delete p; return 0; }

    C++的引用类型

      数据类型 &别名 = 原名   这是一个给变量取别名的方法,换句话说两个变量名(本名和别名)表示同一个地址里的值,当这个 值被某个名字调用后修改了,另一个名字访问它后也是修改后的

    #include <iostream> using namespace std; int main() { int a = 10; int b = &a; cout << "a = " << a << endl; cout << "b = " << b << endl; return 0; }

      别名有个使用限制,那就是它必须要在申明时候去给他赋值,而且后续无法修改变量。这里大家可以窥见其本质,对的,就是指针常量   在函数中用引用可以减少我们的书写,这样写的时候非常方便不用加入很多的取值符号*

    #include <iostream> using namespace std; void Swap(int &a, int &b) { int temp = a; a = b; b = temp; } int main() { int a = 10; int b = 20; Swap(a, b); cout << "a = " << a << endl; cout << "b = " << b << endl; return 0; }

    实际上也可以作为函数的返回值,这里如果理解起来困难,可以把它当作指针函数

    #include <iostream> using namespace std; int& Test() { static int a = 10; // 这里同C的指针函数一样,不能返回局部变量 return a; } int main() { int a; a = Test(); Test() = a+10; // 这里同C的指针函数一样,可以作为左值 cout << "a = " << Test() << endl; return 0; }

    C++函数的拓展

    函数的默认参数

      在C++中允许函数拥有默认的参数,当我们没有赋值的时候它会成为我们的默认值 语法:返回值类型 函数名(参数 = 默认值){}

    #include <iostream> using namespace std; int Fun(int a, int b = 20, int c = 30);// 函数申明一般写默认值,默认参数必须放到非默认参数后面 int main() { cout << Fun(10, 20, 30) << endl; cout << Fun(10) << endl; return 0; } int Fun(int a, int b, int c) // 函数实现和申明不能同时有默认值 { return a,b,c; }
    Processed: 0.012, SQL: 9