我有一个关于添加字符串和数据类型的问题。在这样的算术中使用它们意味着什么?是body + size
意味着它正在创建一个包含它们的新内存块?
以下只是代码摘录:
char* body;
ssize_t size = load();
char buffer[512];
body = realloc(body, size + octets);
if (body == NULL)
{
return -1;
}
memcpy(body + size, buffer, octets);
size += octets;
最佳答案
char *body;
body
不是字符串,而是指针。如果正确初始化,它可能指向一个字符串,但它本身不是字符串。
ssize_t size;
size
是一个整数。
body + size
这是指针算术。它不分配任何内存;它只需要一个指针值和一个整数,并产生一个新的指针值。如果 body
指向数组的一个元素,则 body + size
指向同一数组中稍后的元素 size
位置。 (如果 body
未指向数组元素,或者 body + size
超出数组范围,则行为未定义。)
memcpy(body + size, buffer, octets);
例如,假设 body
指向由 100 个 char
元素组成的数组的初始(第 0 个)元素,并假设 size == 30
。那么 body + size
是一个 char*
值,指向同一数组的第 30 个元素。
在任何像样的 C 教科书或教程中查找“指针算术”。
关于c - 添加字符串和 ssize_t?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31736500/