Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 将整数添加到指针中做什么?_C - Fatal编程技术网

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语言中,整数与指针的加法和减法,以及指针与指针的减法(生成整数)都非常有用,并且定义得非常好,根据指向的单个项进行操作。