不懂指针类型,8个例子给你讲明白
知乎上回答了一个粉丝问题,
结果这兄弟又连续问了几个问题:
好吧,帮人帮到底,送佛送到西!
给你讲彻底点吧!
1. int va;
这是一个整型变量,32位CPU的话,占有32个bite
2. int *va;
这是一个整型指针变量,用于存放一个整型变量的地址,
3. int **va;
这是一个整型的二级指针,用于存放一个内存的地址,该地址对应的内存中存放了另一个整型变量的地址
比如:
int va=0x12345678;
int *pva = &va;
int **ppva = &pva;
4. int *va[3]
这是一个数组,该数组里面的成员是整型的指针,分别指向int型的内存
5. int (*va)[3]
这是一个指针,指向一个int型数组
注意,该地址类型是int [3]型,他的值是0x40004000,
值为0x40004000的符号还有:
a &a[0]
但是他俩的类型和va不一样,
6. void *va(int)
这是一个函数
函数的参数是int,
返回值是void *
7. void (*va)(int)
这是一个指针,指向一个函数,
该函数形参是int
返回值是void
举例
void (*va)(int);
void func(int num)
{
printf("一口Linux %d\n",num);
}
va = func ;
//调用
main()
{
(*va)(6);
}
注意:函数名也是一个地址
8. int (*va[3])(int)
结合方式:
- va先和[3]结合,说明va是一个数组
- va[3] 外面*结合,所以数组元素是一个指针
- 假定(*va[3])是X,外面是 int (X)(int),所以指针是指向函数的
- 函数的形参是是int型,返回值是int型
欢迎关注公众号:一口Linux
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」