04-数组
数组元素个数#
Line13 这里的 p 是指针变量,p[0] 应该不存在的,怎么能这样用?
- C 语言中可以用指针表示数组的每一个元素。本质上,对同一个对象有两种不同的符号表示。如定义:
a[n] ~ *(a+n)
,即寻址到内存 a,然后移动 n 个单元,再取出数组。故p[0] ~ *(p+0)
,该值的类型为 int - num2 的计算在语法上没有任何问题,但是 32 位机和 64 位运行结果不同,在 32 位机器出现结果正常,64 位机出现错误结果。这是因为:64 位机中,int* 的指针为 8 个字节
a 和 &a 的区别#
- a 和 &a 输出结果相同,但是二者数据类型不同!
a
:数组首元素的地址,同时与整个数组地址重合。但其不能代表整个数组,只能代表起始元素的地址&a
:整个数组的地址
- a+1 和 &a+1 地址上差了 20 个字节
a+1
:a + sizeof(a[0])
&a+1
:整块数组所占字节数总数为单位 1
【推荐】国内首个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 中如何实现缓存的预热?