添加字符串和 ssize_t?

Adding Strings and ssize_t?

我对添加字符串和数据类型有疑问。在这样的算术中使用它们是什么意思? 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 教科书或教程中查找 "pointer arithmetic"。