【发布时间】:2017-07-31 16:27:13
【问题描述】:
我正在尝试从函数 readfile 访问名为 buf 的缓冲区。当我打印 sizeof(buf) 时,我看到 buf 有 4 个字节(指针)。另一方面,如果我将 printf 命令粘贴到 readFiles 上,我可以看到大小为 2916。实际上,我不明白为什么它不是 729,但很明显我无法访问 readfile 中的 buf我需要。所以问题是; 问题出在哪里以及如何解决?
void readfiles(FILES * files){
unsigned char * buf [1*729];
int skip_lines = 14;
int shift = 0;
char * filename = "file.txt";
// printf("buf size %d", sizeof(buf));
readfile(filename, skip_lines, buf, shift);
}
int readfile(char * name, int skip, unsigned char * buf, int shift ){
// buf is (unsigned char *) on address 0x22dd18 ""
printf("buf size %d", sizeof(buf));
}
【问题讨论】:
-
只需将
unsigned char * buf [1*729];更改为unsigned char buf [1*729];,你的问题就会突然消失(好吧,至少去别处) -
buf 是四个字节和 4 * 729 = 2916。您声明了一个指针数组。
-
删除指针解决了一个问题(现在大小为 729)。但是当我删除指针时,我仍然无法访问 buf(大小仍然是 4)。另外,当我删除指针时,数据是否会保存在缓冲区中?
-
哪一行打印 4 个字节?