繁体   English   中英

如何从C中的内部函数访问unsigned char数组?

[英]how to access unsigned char array from inside function in C?

我试图从函数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));
}

如果将数组作为指针传递给C函数,则无法检测其长度。

int readfile(char * name, int skip, unsigned char * buf, int shift ){
// nothing you do in here can tell how big buf is
}

如果您需要知道buf的长度,则必须将其作为参数传递

int readfile(char * name, int skip, unsigned char * buf,int blen, int shift ){
...
}

readfile()

printf("buf size %d", sizeof(buf));

如您所知,这将显示4,因为buf是一个指针。 readfiles()的相同打印语句。 打印更大的数字,因为buf是一个数组。

如pm100所述,您无法从指向该数组的指针获取数组的大小。 此外,在访问指针时需要非常小心。 如果它们没有指向有效的内存地址,那么您将遇到很多错误。 这些问题很难跟踪,因为问题将发生在代码的其他部分而不是指针错误所在的地方。 我建议您了解malloc()free() ,以便为指针动态分配内存。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM