刘梦迪113 level
获赞
1
粉丝
2
关注
3
看过 TA
11
哈尔滨理工大学
2029
IP属地:黑龙江
暂未填写个人简介
私信
关注
2025-12-22 10:28
哈尔滨理工大学
​ 空指针:指向“空地址”的指针,用 nullptr (C++11后推荐)或 NULL 表示,避免野指针(指向非法内存的指针)。​- 示例: int* p = nullptr; (此时 *p 不可访问,会报错)。动态内存分配:用 new 分配内存, delete 释放内存,是指针的核心用途之一(数组动态分配需用 delete[] )。​- 示例: int* p = new int(5); (分配1个int内存,初始值5); delete p; (释放内存,避免内存泄漏)三、常见指针类型1. 常量指针: const 数据类型* 指针 ,指针指向的内容不可修改,但指针本身可指向其他地址。​- 示例: const int* p = &a; *p = 30; (报错,不能修改指向的值); p = &b; (合法,可改指向)。​2. 指针常量: 数据类型* const 指针 ,指针本身不可修改(不能指向其他地址),但指向的内容可修改。​- 示例: int* const p = &a; p = &b; (报错,不能改指向); *p = 30; (合法,可改值)。​3. 二级指针:指向指针的指针,语法 数据类型** 指针 ,用于存储指针变量的地址(如 int** pp = &p; , pp 指向 p , **pp 等价于 *p ,即 a 的值)。
0 点赞 评论 收藏
分享
2025-11-27 08:30
哈尔滨理工大学
在C++中,结构体(struct) 是一种用户自定义数据类型,用于将不同类型的变量(成员)组合成一个整体,核心作用是“打包”相关数据,方便管理和使用。1. 结构体的基本定义与使用结构体通过  struct  关键字定义,语法如下,结合代码示例更易理解:代码:#include# includeusing namespace std;// 1. 定义结构体(相当于创建一个新的"数据模板")struct Student {// 成员变量:不同类型的数据string name;  // 姓名(string类型)int age;      // 年龄(int类型)float score;  // 分数(float类型)};  // 注意:结构体定义结尾必须加分号int main() {// 2. 声明结构体变量(使用"模板"创建具体数据)Student stu1;  // stu1 是 Student 类型的变量// 3. 给成员变量赋值(通过"变量名.成员名"访问)stu1.name = "张三";stu1.age = 18;stu1.score = 92.5;// 4. 访问并输出成员变量cout << "姓名:" << stu1.name << endl;cout << "年龄:" << stu1.age << endl;cout << "分数:" << stu1.score << endl;return 0;}输出结果:plaintext姓名:张三年龄:18分数:92.5
0 点赞 评论 收藏
分享
2025-11-22 13:52
哈尔滨理工大学
1.末尾向开头遍历#include# includeusing namespace std;int main(){string s;cin >> s;// 从字符串最后一个字符开始,反向遍历到第一个字符for(int i = s.length() - 1; i >= 0; i--){cout << s[i];}cout << endl;return 0;}2.reverse#include# include#include   // 包含 reverse 函数using namespace std;int main() {string s;cin >> s;reverse(s.begin(), s.end());  // 反转字符串:begin()是起始迭代器,end()是结束迭代器cout << s << endl;return 0;}3.双指针#include# includeusing namespace std;int main() {string s;cin >> s;int left = 0;                  // 左指针:起始位置int right = s.length() - 1;    // 右指针:末尾位置while (left < right) {         // 两指针未相遇时,交换字符swap(s[left], s[right]);   // 交换左右指针指向的字符(C++内置swap函数)left++;                    // 左指针右移right--;                   // 右指针左移}cout << s << endl;return 0;}4.#include# includeusing namespace std;// 递归函数:逆序输出字符串 s(从索引 index 开始)void reverseString(const string& s, int index) {if (index == s.length()) {     // 递归终止条件:索引到达字符串末尾return;}// 先递归处理下一个字符(子问题:逆序输出 s[index+1 ... end])reverseString(s, index + 1);// 递归返回后,输出当前字符(子问题解决后,输出当前字符,实现逆序)cout << s[index];}int main() {string s;cin >> s;reverseString(s, 0);  // 从索引 0 开始递归cout << endl;return 0;}
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客网在线编程
牛客网题解
牛客企业服务