You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

堆上双指针数组通过fwrite写入文件的逻辑疑问

双指针堆数组通过fwrite写入文件的逻辑困惑

我有一个存放在堆内存中的双指针数组,能理解堆数组的概念,但搞不懂用fwrite()把它写入文件的逻辑,希望有人解答。

我的代码示例:

int ** A;
A = new int* [randomSize];
A[0] = new int [randomSize];

我对单指针数组用fwrite()的理解是这样的:

fwrite(&A[0], sizeof(teststruct), 54, dogfile);

我觉得A[0]是指向实际值的指针,而fwrite需要的是数据的起始地址,所以要加&符号,把该地址对应的内容写入文件。

按照这个逻辑,我认为双指针数组的写法应该是:

fwrite(&A[0][0], sizeof(teststruct), 54, dogfile);

也就是A[0]是指向另一个指针的指针,A[0][0]指向实际存储的值,&A[0][0]就是数据的起始地址,供fwrite写入内容。

但我在网上看到的写法是:

fwrite(A[0], sizeof(teststruct), 54, dogfile);

这个写法被解释为逐行把双指针数组的值写入文件,和我的理解不符,而且没有我预期的&符号,想知道这里的逻辑到底是怎样的。

内容的提问来源于stack exchange,提问作者Gore District

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 19:15:56