首页 > 编程语言 >C++基础知识学习笔记(2)

C++基础知识学习笔记(2)

时间:2024-05-23 22:20:39浏览次数:16  
标签:const int 笔记 基础知识 传递 地址 C++ 指针 结构

资料来源

https://www.bilibili.com/video/BV1et411b73Z/?spm_id_from=333.337.search-card.all.click&vd_source=cc561849591f6a210152150b2493f6f3

简单知识点

指针

作用:通过指针间接访问内存

可以通过指针来保存一个地址。

image

image

指针所占内存空间

32位操作系统,占4个字节。
64位操作系统,占8个字节。

image

空指针

image

image

	int* p = NULL;
	cout << p << endl;//00000000

野指针

指针变量指向非法内存空间。

空间没有申请就让指针指向了。应该避免出现野指针。

image

const修饰指针

image

  1. const修饰指针,为常量指针。
    地址上的值不能改,指针可以指向别的地址。
    image

  2. const修饰指针变量,为指针常量。
    地址上的值可以改,指针的指向不可以改。
    image

  3. const既修饰指针,又修饰常量
    地址上的值、指针指向都不可以修改。
    image

指针和数组

用指针访问数组中的元素。

image

	int a[] = { 1,2,3,4,5 };
	int* p = a;
	cout << *p << endl;
	cout << *(++p) << endl;
	cout << *(++p) << endl;

指针和函数

  1. 利用指针作为函数参数,修改实参的值。
    相比于之前的值传递,此时采用地址传递。

image

image

数组作为函数参数时,也可以写成指针形式:int arr[]可以写成int *arr

结构体

结构体是用户自定义的数据类型。

image
image

创建具体的结构体:
方法1、2:

	//方法1
	struct Student s1;
	s1.name = "Ken";
	s1.age = 26;
	s1.score = 100;
	cout << s1.name << endl;
	cout << s1.age << endl;
	cout << s1.score << endl;
	//方法2
	struct Student s2 = { "Ken", 10, 88 };
	cout << s2.name << endl;
	cout << s2.age << endl;
	cout << s2.score << endl;

注意:结构体创建时,struct关键字可以省略。定义时不能省略。

方法3:
image

image

结构体数组

image

image

结构体指针

作用:用指针访问结构体中的成员。
用操作符->通过结构体指针访问结构体属性。

image

image

其他:
结构体成员也可以是结构体。

结构体值传递和地址传递

结构体值传递时,形参改变,不会影响实参。

结构体中const使用场景

所以说,结构体值传递会拷贝一份数据。如果是结构体数据等数据量很大的时候,会影响效率。
而此时应该使用地址传递。

使用地址传递时,为了避免函数内不小心改了数据,我们在形参前面加一个const,这样形参就成了常量指针,就不能修改指向地址里面的内容了(防止误操作)。(也可以在形参中使用指针常量:Student * const s)

image

标签:const,int,笔记,基础知识,传递,地址,C++,指针,结构
From: https://www.cnblogs.com/redcode/p/18203020

相关文章

  • TALLRec论文阅读笔记
    TALLRec:AnEffectiveandEfficientTuningFrameworktoAlignLargeLanguageModelwithRecommendation论文阅读笔记Abstract存在的问题:​ 由于LLM的训练任务和推荐任务之间存在显著差异,以及训练前的推荐数据不足,LLM在推荐任务中的表现仍然不理想。解决方案:​ 为了弥补......
  • 深入理解C++多态-虚函数
    引言C++多态的实现方式可以分为静态多态和动态多态,其中静态多态主要有函数重装和模板两种方式,动态多态就是虚函数。下面我们将通过解答以下几个问题的方式来深入理解虚函数的原理:为什么要引入虚函数?(用来解决什么问题)虚函数底层实现原理使用虚函数时需要注意什么?正文......
  • K-D tree 学习笔记
    \(\text{K-Dtree}\)学习笔记\(\text{K-Dtree}\)是一种针对\(k\)维问题求解的算法,并且拥有出色的时空复杂度。思想\(\text{K-Dtree}\)本质上是一棵\(k\)维的二叉平衡树,这保证了其树高稳定在\(\logn\)附近,为求解提供了较为优异的建树模式。\(\text{K-Dtree}\)首......
  • 在C++中,将类的成员函数(也称为方法)作为参数传递
    在C++中,你可以将类的成员函数(也称为方法)作为参数传递,但这通常涉及到使用函数指针或者更现代的C++11及以后版本的std::function和lambda表达式。不过,更常见的是传递成员函数指针,但请注意,成员函数指针与常规函数指针在语法和使用上有所不同,因为成员函数需要访问类的特定实例(即对象)。......
  • Flutter笔记:Widgets Easier组件库-使用隐私守卫
    Flutter笔记WidgetsEasier组件库:使用隐私守卫-文章信息-Author:李俊才(jcLee95)VisitmeatCSDN:https://jclee95.blog.csdn.netMyWebSite:http://thispage.tech/Email:[email protected]:https://blog.csdn.net......
  • 03-Excel基础操作-学习笔记
    本节接着继续介绍排序工具以及一个重要内容分类汇总工具的使用。01自定义排序我们在上一节接触到了使用排序工具,对数字之类的Excel内置的程序可以通过点击操作,但是当超出Excel内置的范围又当如何应对?比如,存在如下场景:针对文字的排序,我们对销售部门所在列进行排序,顺序为“一部......
  • Linux学习笔记16---常用操作命令(free命令)
    free命令显示系统内存的使用情况,包括物理内存、虚拟内存(swap)和内核缓冲区内存。如果加上-h选项,输出的结果会友好很多:有时我们需要持续的观察内存的状况,此时可以使用-s选项并指定间隔的秒数:$free-h-s3上面的命令每隔3秒输出一次内存的使用情况,直到你按下ctr......
  • 单例模式c++实现
    单例模式是一种创建型设计模式,它保证一个类仅有一个实例,并提供一个全局访问点来访问这个唯一实例。下面是一个简单的C++实现单例模式的例子:cppincludeincludeclassSingleton{private:staticSingleton*instance;staticstd::mutexmtx;Singleton(){}//私有构造函......
  • 平衡树 Treap & Splay [学习笔记]
    平衡树\(\tt{Treap}\)&\(\tt{Splay}\)壹.单旋\(\tt{Treap}\)首先了解\(\tt{BST}\)非常好用的东西,但是数据可以把它卡成一条链\(\dots\)于是,我们将\(\tt{Tree}\)与\(\tt{heap}\)(堆)合并,以保证平衡树\(\log\)的深度。具体地,我们可以使用旋转操作实现K8He的图......
  • c++ 语法 引用
      引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。C++引用vs指针引用很容易与指针混淆,它们之间有三个主要的不同:不存在空引用。引用必须连接到一块合法的内存。一旦引用被初始化为......