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

资料来源

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

posted @ 2024-05-23 22:08  greencode  阅读(8)  评论(0编辑  收藏  举报