news 2026/4/15 18:37:36

指针与数组笔记

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
指针与数组笔记

指针基础概念

指针是C语言中存储内存地址的变量,通过指针可以直接访问或修改内存中的数据。指针声明方式为数据类型 *指针变量名,例如int *p表示一个指向整型数据的指针。

野指针及其危害

野指针是指向无效内存地址的指针,通常由以下情况导致:

  • 指针未初始化,默认指向随机地址。
  • 指针指向的内存被释放后未置空(如free(p)后未执行p = NULL)。
  • 指针操作越界(如数组访问超出范围)。

野指针可能导致程序崩溃或数据损坏,解决方法包括:

  • 初始化指针时赋值为NULL
  • 释放内存后立即将指针置空。
  • 避免指针越界访问。

指针与数组的关系

数组名本质上是数组首元素的地址常量,因此数组与指针可互相转换:

int arr[5] = {1, 2, 3, 4, 5}; int *p = arr; // p指向数组首元素

通过指针访问数组元素:

printf("%d", *(p + 2)); // 等价于 arr[2]

指针运算与数组遍历

指针支持加减运算,移动单位由数据类型决定(如int指针+1移动4字节)。遍历数组示例:

for (int *ptr = arr; ptr < arr + 5; ptr++) { printf("%d ", *ptr); }

指针数组与数组指针

  • 指针数组:元素为指针的数组,如int *arr[3]
  • 数组指针:指向数组的指针,如int (*p)[3]指向含3个元素的整型数组。

示例:

int a[2][3] = {{1, 2, 3}, {4, 5, 6}}; int (*p)[3] = a; // p指向二维数组的第一行 printf("%d", p[1][2]); // 输出6

动态内存分配与指针

使用mallocfree动态管理内存时,指针需谨慎处理:

int *p = (int *)malloc(5 * sizeof(int)); // 分配5个int空间 if (p != NULL) { free(p); // 释放内存 p = NULL; // 避免野指针 }

常见错误与调试建议

  • 未检查malloc返回的指针是否为NULL
  • 误用指针类型导致内存访问错误(如char*强转为int*)。
  • 使用工具如Valgrind检测内存泄漏和野指针问题。

通过合理使用指针和数组,可高效操作内存,但需严格避免野指针和越界访问。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 13:31:10

GPT-SoVITS语音重音控制实验记录

GPT-SoVITS语音重音控制实验记录 在虚拟主播直播带货、AI配音一键生成短视频的今天&#xff0c;我们越来越难以分辨一段声音是来自真人还是算法。而更令人惊讶的是&#xff0c;这个“像人”的声音&#xff0c;可能只用了你一分钟的朗读录音就完成了克隆——这正是 GPT-SoVITS …

作者头像 李华
网站建设 2026/4/15 13:31:45

CefFlashBrowser:专业Flash浏览器完整配置指南

CefFlashBrowser&#xff1a;专业Flash浏览器完整配置指南 【免费下载链接】CefFlashBrowser Flash浏览器 / Flash Browser 项目地址: https://gitcode.com/gh_mirrors/ce/CefFlashBrowser 在主流浏览器全面淘汰Flash技术后&#xff0c;CefFlashBrowser提供了完整的Flas…

作者头像 李华
网站建设 2026/4/15 13:30:19

微信多设备登录完整指南:打破设备限制的终极方案

微信多设备登录完整指南&#xff1a;打破设备限制的终极方案 【免费下载链接】WeChatPad 强制使用微信平板模式 项目地址: https://gitcode.com/gh_mirrors/we/WeChatPad 还在为微信只能在一个设备上登录而烦恼吗&#xff1f;WeChatPad项目为你带来了革命性的解决方案&a…

作者头像 李华
网站建设 2026/4/15 13:30:18

智慧树插件终极配置指南:3步实现全自动高效学习方案

智慧树插件终极配置指南&#xff1a;3步实现全自动高效学习方案 【免费下载链接】zhihuishu 智慧树刷课插件&#xff0c;自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 还在为智慧树网课的繁琐操作而烦恼吗&#xff1f;每次视…

作者头像 李华
网站建设 2026/4/15 13:31:46

Blender MMD Tools完全指南:3分钟实现免费专业安装与使用

Blender MMD Tools完全指南&#xff1a;3分钟实现免费专业安装与使用 【免费下载链接】blender_mmd_tools MMD Tools is a blender addon for importing/exporting Models and Motions of MikuMikuDance. 项目地址: https://gitcode.com/gh_mirrors/bl/blender_mmd_tools …

作者头像 李华
网站建设 2026/4/15 13:30:22

视频PPT提取终极指南:3步搞定课件整理,学习效率翻倍!

还在为整理视频课件而头疼吗&#xff1f;每次看教学视频都要反复暂停截图&#xff0c;浪费大量时间却效果不佳&#xff1f;今天我要向你推荐一个神奇的工具——extract-video-ppt&#xff0c;它能让你在3分钟内从视频中智能提取完整的PPT幻灯片&#xff0c;彻底告别手动操作的烦…

作者头像 李华