指针精要:从入门到精通,嵌入式开发学习日志32——stm32之PWM。
指针的基本概念指针是编程中用于存储内存地址的变量它指向另一个变量的位置。通过指针可以直接访问或修改内存中的数据提升程序的灵活性和效率。在C/C中指针的声明方式为int *ptr; // 声明一个整型指针指针的类型决定了它指向的数据类型例如int *指向整数char *指向字符。指针的初始化与赋值指针必须初始化后才能使用否则可能引发未定义行为。初始化方式包括直接赋值或动态分配内存int num 10; int *ptr num; // ptr指向num的地址 int *dynamic_ptr malloc(sizeof(int)); // 动态分配内存 *dynamic_ptr 20;运算符用于获取变量的地址*运算符用于解引用指针访问指针指向的值。指针的运算指针支持有限的算术运算如加减、比较等。运算的单位是指针类型的大小如int指针每次加减移动4字节int arr[3] {1, 2, 3}; int *ptr arr; ptr; // 指向arr[1]指针的比较常用于数组遍历或动态内存管理while (ptr arr[3]) { printf(%d , *ptr); ptr; }指针与数组的关系数组名本质上是一个指向数组首元素的常量指针。以下两种访问方式等价int arr[3] {10, 20, 30}; printf(%d, arr[1]); // 通过数组下标 printf(%d, *(arr 1)); // 通过指针运算指针可以替代数组名进行遍历但需注意越界问题。多级指针与指针数组多级指针如int **pptr指向另一个指针的地址常用于动态多维数组或函数参数传递int num 5; int *ptr num; int **pptr ptr;指针数组是存储指针的数组常用于字符串数组或命令行参数处理char *names[] {Alice, Bob, Charlie};指针的安全问题指针使用不当可能导致内存泄漏、野指针或段错误。常见问题包括未初始化的指针野指针。释放内存后未置空悬垂指针。越界访问缓冲区溢出。安全实践int *ptr NULL; // 初始化为NULL free(ptr); // 释放后置空 ptr NULL;指针的高级应用函数指针将函数作为参数传递实现回调机制。void greet() { printf(Hello!); } void (*func_ptr)() greet; func_ptr(); // 调用函数动态数据结构如链表、树的实现依赖指针。struct Node { int data; struct Node *next; };总结指针是底层编程的核心工具熟练掌握其原理和操作能显著提升代码效率。需注意类型匹配、内存管理和安全性避免常见陷阱。https://github.com/artful-46-doses/pra_h2t0/blob/main/README.mdhttps://raw.githubusercontent.com/artful-46-doses/pra_h2t0/main/README.mdhttps://github.com/example-subtle-5c/ntz_p3rfhttps://github.com/example-subtle-5c/ntz_p3rf/blob/main/README.mdhttps://raw.githubusercontent.com/example-subtle-5c/ntz_p3rf/main/README.md
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2490952.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!