gpt4 book ai didi

c - 添加字符串和 ssize_t?

转载 作者:行者123 更新时间:2023-11-30 21:02:12 25 4
gpt4 key购买 nike

我有一个关于添加字符串和数据类型的问题。在这样的算术中使用它们意味着什么?是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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com