C++基础知识详解:Get()与getline()、struct与枚举

需积分: 31 2 下载量 10 浏览量 更新于2024-07-24 收藏 4.87MB DOCX 举报
"C++基础知识概览" C++是一种强大的、面向对象的编程语言,它在计算机科学领域广泛应用。本文将探讨一些C++的基本概念,包括指针、输入/输出函数、结构体(struct)、枚举(enumeration)以及内存管理。 1. 指针的理解: 在C++中,"S"表示的是一个地址,它存储了内存中的某个位置。理解指针的关键在于认识到它们不直接包含数据,而是指向包含数据的内存位置。例如,字符串"hello"在内存中占据一串连续的字符空间,"S"可能指向该字符串的首字符地址。因此,"S"并不等同于"hello",而是指向它的一个指针。 2. 输入/输出函数的区别: `get()`和`getline()`是C++中处理输入的两种不同方式。`get()`函数从流中读取单个字符或直到遇到指定的分隔符,它会停留在当前行,除非有特殊处理,否则不会自动换行。而`getline()`函数则读取整个行,直到遇到换行符或文件结束,确保获取下一行的字符。 3. 结构体(struct)的定义与使用: 在C++中,定义结构体可以省略`struct`关键字,这与C语言不同。例如,定义一个名为`perks`的结构体可以写作: ```cpp Perks { int key; double people; }; ``` 在创建结构体变量时,C++允许省略类型名,如: ```cpp Perks mr_simth = {12, 30.05}; Perks ms_jones; mr_simth = ms_jones; ``` 或者在定义结构体的同时初始化: ```cpp Perks mr_simth = {12, 30.05}; ``` 4. 枚举(enumeration)的扩展: C++11引入了强类型枚举(strongly-typed enums),这增强了枚举的类型安全。传统枚举可以隐式转换为整型,而C++11的枚举类(enum class)不允许这种转换,除非显式强制类型转换。 5. 内存管理与数组: C++提供了内置数组(如`int A[10]`)和动态内存分配(如`int* ptr = new int[10]`)两种方式。内置数组在编译时大小固定,而动态分配的内存可以在运行时决定大小。动态分配的内存必须使用`delete[]`释放,以防内存泄漏。例如: ```cpp int* arr = new int[5]; // 使用arr... delete[] arr; // 释放内存 ``` 字符串的情况特殊,它们通常以字符指针的形式存在,指向字符数组的起始地址,因此"Newinonfunction,anddeleteinanotherfunction"在内存中被视为一个地址,而不是直接的字符串文本。 掌握C++的基础知识,包括指针的使用、输入/输出函数的选择、结构体和枚举的定义、以及内存管理策略,是成为一名熟练的C++程序员的基础。理解这些概念将有助于编写更高效、更安全的代码。