![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++ 学习笔记
文章平均质量分 53
C++ 学习笔记
任重道远_HSY
这个作者很懒,什么都没留下…
展开
-
C++ 字符串查找
函数返回str2在str1中首次出现的地址;否则,返回NULL。//判断字符串str2是否是str1的子串。//str1-要查找的字符串或字符串指针。//str2-要查找的子串。原创 2022-08-02 09:43:58 · 5743 阅读 · 1 评论 -
12 按值传递,引用传递
按值传递,引用传递#include <iostream>#include <string>void printByValue(std::string val) //函数参数val是str的副本{ std::cout << val << '\n'; // 通过副本打印值val}void printByReference(const std::string& ref) // 函数参数ref是绑定到str的引用{ std::原创 2022-05-11 16:09:02 · 159 阅读 · 0 评论 -
11 C++具有多种模板类型的函数模板
#include <iostream>template <typename T>T max(T x, T y){ return (x > y) ? x : y;}int main(){ std::cout << max(1, 2) << '\n'; // 实例化为max(int,int) std::cout << max(1.5, 2.5) << '\n'; //实例化为max(doub原创 2022-05-10 15:35:26 · 808 阅读 · 0 评论 -
10 C++ 引用
1 C++引用定义:在C++中,引用变量其实就是一个别名,也就是说,它是某个已存在变量的另一个名字。一旦吧引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。type &val=test;参数描述type引用变量的类型val引用变量名test需要应用的变量在定义引用变量是,需要在变量名前加上&符号注意事项:1.&不是取地址运算,而是起标识符作用。2.类型标识符是指目标变量的类型3.声明引用时,必须同时对其初始化。原创 2022-05-10 09:56:16 · 106 阅读 · 0 评论 -
9 回调函数
在C++中,回调函数就是通过一个函数指针调用的函数,如果你把函数的指针(地址)作为参数传递给另一个函数,党这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是又该函数的实现直接调用,而是在特定的事件或条件发生时又另外的一方调用的,用于对该时间或条件进行相应。回调函数注意点:1.函数指针作为另一个函数参数2.回调函数不是有函数实现方法直接调用3.特定事件或条件发生由另一方调用定义:typedef void(*pFun)(int,int,double)typedef定义了一个原创 2022-05-09 20:29:50 · 88 阅读 · 0 评论 -
8 函数指针
在C++中 函数指针是一个指针,该指针存放的是一个函数地址,而函数的名称就是函数的入口,即地址,要注意与指针函数的区别。如 int * pFunc(int a) 就是一个指针函数,指的是返回某种类型的指针函数。定义:type(*funcName)(T param);参数描述type该函数的返回类型。funcName函数名T函数参数类型param函数参数我们定义一个函数指针funcName,其返回类型是type,接受一个T类型的参数#include原创 2022-05-09 20:28:45 · 60 阅读 · 0 评论 -
7 C++指针做函数返回值
在C++中,函数的返回值出来可以是普通的数据类型,还可以是指针类型,我们将函数的返回值定义为指针类,用来返回一个变量的地址,但我们不能返回局部变量的地址。用指针作为函数返回值时,需要注意的一点是,函数运行结束后会销毁内部定义的所有局部数据,包括局部变量,局部数组,形参,函数返回的指针尽量不要指向这些数据。语法如下:type* funname(){ return val;}我们定义了一个funname函数,其返回值为type类型的指针;#include <iostream>us原创 2022-05-09 17:36:14 · 1410 阅读 · 0 评论 -
6. C++数组名与指针区别
1. C++数组名与指针区别对比数组名指针&(取地址)数组名取地址得到的是数组名所指元素地址(数组首地址)对指针取地址得到的是指针变量自身的地址常量变量数组名师常量指针指针是变量指针sizeof对数组名使用sizeof时,得到的是元素个数乘元素类型的字节数对指针sizeof得到的是指针类型的字节数1.1数组名是常量指针数组名是常量指针,不可以被修改,指针是变量指针,可以修改#include <iostream>using nam原创 2022-05-09 17:02:58 · 725 阅读 · 3 评论 -
5 前向声明和定义
这个程序看似正常:1.#include <iostream>int main(){ std::cout << "The sum of 3 and 4 is: " << add(3, 4) << '\n'; return 0;}int add(int x, int y){ return x + y;}你会期望这个程序产生结果:3和4之和为:7但实际上,它根本无法编译!Visual Studio 产生原创 2022-04-27 20:15:55 · 1165 阅读 · 0 评论 -
4 — 局部作用域介绍
局部变量函数参数以及在函数体内定义的变量称为局部变量,例如:int add(int x, int y) // 函数参数x和y是局部变量{ int z{ x + y }; // z也是局部变量 return z;}局部变量生命周期函数参数在输入函数时创建和初始化,函数体内的变量在定义点创建和初始化,自然的后续问题是,那么实例化变量何时被销毁?局部变量在定义它的花括号集的末尾以相反的创建顺序被销毁(或者对于函数参数,在函数的末尾)。例如:int add(int x, int原创 2022-04-27 13:08:25 · 193 阅读 · 0 评论 -
3 配置编译器:警告和错误级别
当您编写程序时,编译器将检查以确保您遵循 C++ 语言的规则。如果你做了一些明确违反语言规则的事情,在编译期间编译器会发出一个错误,提供包含错误的行号,以及一些关于预期内容和发现内容的文本。实际错误可能在该行或前一行。一旦您识别并修复了错误的代码行,您可以尝试再次编译。在其他情况下,编译器可能会发现看似错误的代码,但编译器无法确定。在这种情况下,编译器可能会选择发出警告。警告不会停止编译,而是通知程序员似乎有问题。最佳实践1 提高警告级别将您的警告级别调到最大,尤其是在您学习的时候。它将帮助您原创 2022-04-26 15:26:17 · 1596 阅读 · 0 评论 -
2 编译器、链接器和库简介
1 源码编译我们使用 C++ 编译器编译 C++ 程序,C++ 编译器按顺序遍历程序中的每个源代码 (.cpp) 文件,并执行两项重要任务:首先,它会检查您的代码以确保它遵循 C++ 语言的规则。如果没有,编译器会报错(给出相应的行号)来帮助你修改相应的bug。编译过程也将中止,直到错误得到修复。其次,它将您的 C++ 源代码翻译成称为目标文件的机器语言文件。对象文件通常命名为name.o或name.obj(C++生成。obj),其中name与生成它的 .cpp 文件的名称相同。如果有三个.cpp翻译 2022-04-26 14:50:49 · 341 阅读 · 0 评论 -
1 C++ 11 新特性
1 auto自动推导C++11允许你声明一个变量或对象而不需要指明其类型,只需说他是auto,例如: auto i=5;//i是int类型 double f(); auto d=f();//i是double类型以auto声明的变量,其类型会根据其初始值被自动推导出来,因此一定需要一个初始化的操作:auto i;//这种定义是错误的//可为它加上额外的限定符,例如:static auto d=0.19;//如果类型很长或表达式很复杂,auto特别有用,例如:vector<int&g原创 2022-04-26 10:19:08 · 853 阅读 · 0 评论