一、枚舉
什麼是枚舉?
枚舉(enumeration) 是一種用户自定義的數據類型,用於定義一組命名的整型常量,提高代碼的可讀性和可維護性。
普通枚舉
enum Color {
RED, // 默認值為 0
GREEN, // 1
BLUE // 2
};
- 枚舉值默認從
0開始依次遞增; - 也可以顯式指定值:
enum Status {
OFF = 0,
ON = 1,
PENDING = 5,
ERROR // 自動為 6
};
使用
/*
枚舉
*/
#include<iostream>
using namespace std;
// 開發中經常用
// 枚舉只是用於開發的一個約定,其實只是為了編譯報錯,本質枚舉就是一個 int
enum sex {
MAN = 11,WOMAN = 22
};
// 聯合體用的比較少
union id {
char id_str[10];
long id_long;
};
struct student {
union id id;
string name;
int age;
enum sex std_sex;
double scorce;
};
int main(){
struct student student1;
student1.id.id_long = 20251023;
student1.name = "xaye";
student1.age = 27;
student1.std_sex = MAN;
student1.scorce = 99;
cout << " id.id_long : " << student1.id.id_long << ", std_sex : "
<< student1.std_sex << endl;
return 0;
}
xaye@orange:~/code/dev/12$ ./a.out
id.id_long : 20251023, std_sex : 11
⚠️ 注意:普通枚舉的常量在全局作用域中,可能與其他枚舉或變量名衝突。
二、C++指針
什麼是指針?
指針 是一個變量,其值為另一個變量的 內存地址。通過指針,可以直接訪問和操作內存中的數據。
基本語法
int x = 10;
int* p = &x; // p 是指向 int 類型的指針,存儲 x 的地址
&:取地址運算符(獲取變量的地址)*:解引用運算符(訪問指針所指向的值)
cout << *p; // 輸出 10(即 x 的值)
*p = 20; // 修改 x 的值為 20
空指針與野指針
- 空指針(nullptr):不指向任何有效地址(C++11 推薦使用 nullptr,而非 NULL 或 0):
int* p = nullptr;
if (p == nullptr) { /* 安全檢查 */ }
- 野指針:指向已釋放或無效內存的指針,使用會導致未定義行為(應避免)。
/*
指針:C++裏面遇到的第一個難點,也是最重要的一點!!!
*/
#include<iostream>
using namespace std;
int main() {
// 數據是存儲在內存條的某一個位置
int number = 1;
// int*: 指針類型, &: 取地址的操作符
int* number_point = &number;
// number: 1, number_point: 0x7fff9fd5e9cc
cout << "number: " << number << ", number_point: " << number_point << endl;
// 通過指針可以做一些操作,通過指針 * 可以間接操作變量賦值
*number_point = 10;
cout << "number: " << number << ", number_point: " << number_point << endl;
return 0;
}
我的理解是把一個變量當作一個硬幣,它的正面是他的值,反面是它的地址,(*) 就相當於把他反轉過來看到了它的地址,(*地址)就相當於繼續反轉 就又看見了他的值。
xaye@orange:~/code/dev/12$ ./a.out
number: 1, number_point: 0x7ffc69f4ddec
number: 10, number_point: 0x7ffc69f4ddec
指針是存儲內存地址的變量,用於間接訪問和操作數據,功能強大但需謹慎使用。