C语言-(void*)类型指针
(void*)类型指针:ANSI新增的:即定义了一个指针,但不指定指向任何类型(即指向抽象的数据类型)。void
是空类型,只保存了指针的值,而丢失了类型信息
1 通过强制类型转换可将其值赋给另一指针变量
2.1用于动态存储函数的返回型指针 void malloc/calloc()
2.2也可用于函数 void*fun() //表示返回值是一个地址,指向空(抽象)数据类型
空指针NULL:不指向任何对象,不同于未初始化的野指针。
#ifdef __cplusplus #define NULL 0 #else #define NULL ((void *)0) #endif
数组与指针:数组所占存储空间的内存:sizeof(数组名)
数组的大小: sizeof(数组名)/sizeof(数据类型)
const 和 指针
- 指向常量的指针,值不能改变,指向可改变
- 常指针值能改变,指向不可改变
- 指向常量的常指针,都不能改变

#include <stdio.h> int main() { // 1 指向常量的指针:指向可变,值不能变可改变指针 const int a = 10; int e = 20; int *p = &a; p=&e; //可指向其它对象 //*p = 1000;//但指向&a后其值*a就不能变化 printf("*p = %d\n", *p); // 2 可改变指针 const b = 10; int *pb = &b; pb = p; printf("*pb = %d\n", *pb); // 3常指针 const c = 10; int * const pc = &c;//常指针指向一个对象后指向不能变 *pc = 1000; //但值可变(指向对象的值) //pc = pb;不能改变 //4指向常量的常指针 const d = 10; const * int const pd = &d; //*pd = 1000;都 不能改变 printf("\n"); return 0; }
深拷贝与浅拷贝:
浅拷贝即通过指针赋值的方法实现指向,但如果浅拷贝后要删除就会使另外对象中的指针就会无效,形成所谓的野指针,而访问无效指针是危险的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?