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