C++基础知识学习笔记(2)
资料来源
简单知识点
指针
作用:通过指针间接访问内存
可以通过指针来保存一个地址。
指针所占内存空间
32位操作系统,占4个字节。
64位操作系统,占8个字节。
空指针
int* p = NULL;
cout << p << endl;//00000000
野指针
指针变量指向非法内存空间。
空间没有申请就让指针指向了。应该避免出现野指针。
const修饰指针
-
const修饰指针,为常量指针。
地址上的值不能改,指针可以指向别的地址。
-
const修饰指针变量,为指针常量。
地址上的值可以改,指针的指向不可以改。
-
const既修饰指针,又修饰常量
地址上的值、指针指向都不可以修改。
指针和数组
用指针访问数组中的元素。
int a[] = { 1,2,3,4,5 };
int* p = a;
cout << *p << endl;
cout << *(++p) << endl;
cout << *(++p) << endl;
指针和函数
- 利用指针作为函数参数,修改实参的值。
相比于之前的值传递,此时采用地址传递。
数组作为函数参数时,也可以写成指针形式:int arr[]
可以写成int *arr
。
结构体
结构体是用户自定义的数据类型。
创建具体的结构体:
方法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:
结构体数组
结构体指针
作用:用指针访问结构体中的成员。
用操作符->
通过结构体指针访问结构体属性。
其他:
结构体成员也可以是结构体。
结构体值传递和地址传递
结构体值传递时,形参改变,不会影响实参。
结构体中const使用场景
所以说,结构体值传递会拷贝一份数据。如果是结构体数据等数据量很大的时候,会影响效率。
而此时应该使用地址传递。
使用地址传递时,为了避免函数内不小心改了数据,我们在形参前面加一个const,这样形参就成了常量指针,就不能修改指向地址里面的内容了(防止误操作)。(也可以在形参中使用指针常量:Student * const s)