堆上双指针数组通过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
相关产品推荐
相关产品推荐

