GESP C++四级
一、指针类型
1.1 指针定义与操作
知识点:
- 定义:
数据类型* 指针变量名;
,指针存储变量地址 - 赋值:
指针变量 = &变量;
(取地址) - 解引用:
*指针变量
访问指向的值 - 指针运算:指针加减整数表示地址偏移(单位:数据类型大小)
代码示例:
#include <iostream>
using namespace std;
int main() {
int a = 10;
int* p = &a; // p指向a的地址
*p = 20; // 通过指针修改a的值
cout << a << endl; // 输出20
// 指针运算示例
int arr[3] = {
1, 2, 3};
int* ptr = arr; // ptr指向数组首地址
cout << *(ptr + 1) << endl; // 输出arr[1]的值2
return 0;
}
1.2 指针常见错误
int* p; // 未初始化的野指针(危险!)
*p = 5; // 访问未知内存地址,可能导致程序崩溃
// 正确做法:
int* p = new int; // 动态分配内存
*p = 5;
delete p; // 释放内存
二、结构体与多维数组
2.1 结构体定义与使用
知识点:
- 定义:
struct 结构体名 { 数据类型 成员1; ... };
- 初始化:
结构体名 变量 = {成员1值, 成员2值};
- 成员访问:
.
运算符(普通变量)或->
(指针)
代码示例:
#include <iostream>
using namespace std;
struct Student {
string name;
int age;
double score;
};
int main() {
Student s1 = {
"Alice", 15, 95.5}; // 初始化
Student* s2 = new Student{
"Bob", 16, 88.0};
cout << s1.name << endl; // 输出Alice
cout << s2->age << endl; // 输出16(指针用->访问)
delete s2;
return 0;
}