C 将整数添加到指针中做什么?
我正在努力理解这个节目 代码是:C 将整数添加到指针中做什么?,c,C,我正在努力理解这个节目 代码是: ActiveBuffer->length += sprintf( ActiveBuffer->data + ActiveBuffer->length, "\"Timestamp[ms]\":%lld,\n", timestamp); 其中ActiveBuffer是: Buffer *ActiveBuffer; 而缓冲区定义为: typedef struct { int32_t leng
ActiveBuffer->length += sprintf(
ActiveBuffer->data + ActiveBuffer->length,
"\"Timestamp[ms]\":%lld,\n", timestamp);
其中ActiveBuffer是:
Buffer *ActiveBuffer;
而缓冲区
定义为:
typedef struct {
int32_t length;
char data[BUFFSIZE];
} Buffer;
我知道函数sprintf将数据写入缓冲区,但我无法理解添加的
ActiveBuffer->data+ActiveBuffer->length
将ActiveBuffer->data+ActiveBuffer->length
想象为&ActiveBuffer->data[ActiveBuffer->length]
。它是进入缓冲区的偏移量。ActiveBuffer->data是指向数组第一个元素的指针,ActiveBuffer->length是一个整数,+运算符充当指向(ActiveBuffer->length)第个元素数的偏移量指针。换句话说,每次写入ActiveBuffer->data时,它都会被追加,而不是覆盖。但要确保尺寸足够大,以满足您的需要 ActiveBuffer->data是基址,ActiveBuffer->length是已经写入的字符数,所以基本上这是您应该读取的写入偏移量。在C语言中,整数与指针的加法和减法,以及指针与指针的减法(生成整数)都非常有用,并且定义得非常好,根据指向的单个项进行操作。