【发布时间】:2014-01-02 13:15:37
【问题描述】:
我正在尝试读取作为指向此函数的指针传递的缓冲区。 memcpy() 工作正常,数据正确存储在buffer 中,但是当我在函数之外访问buffer 时,它是null。有一些指针问题我没有在这里解决。
这是代码,我取出了大部分,我知道它正确地复制了数据,但它没有将它传递给buffer 指针。想法?
int read(file file, char *buffer , int maxlen) {
int bytes_read;
// copy data to file buffer
bytes_read = min(maxlen, file->file_size - file->cursor);
buffer = (char*) malloc(bytes_read);
memcpy(buffer , file->buffer + file->cursor, bytes_read);
return bytes_read;
}
【问题讨论】:
-
你需要传入一个 char** 缓冲区。
-
正如@OldProgrammer 所指出的,您实际上并没有传递对缓冲区的引用——您传递的是对单个字符的引用。
-
@reuben 不,他正在传递一个指针。 C 中没有引用。
-
@H2CO3 是的,我明白这一点。 “通过引用传递”是一个有效且受人尊敬的术语,即使在 C 中也是如此。我在抽象的引用意义上使用这个术语更宽松。