Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.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_Arrays_Pointers_Static - Fatal编程技术网

C指针和数组的静态偏差

C指针和数组的静态偏差,c,arrays,pointers,static,C,Arrays,Pointers,Static,在C中处理一些与指针相关的事情。我想知道第三行在做什么 char *return_pointer; static char string_buffer[MAX_WORD_SIZE]; return_pointer = &string_buffer[sizeof(string_buffer)-1]; *return_pointer = '\0'; 声明 return_pointer = &string_buffer[sizeof(string_buffer)-1]; 正

在C中处理一些与指针相关的事情。我想知道第三行在做什么

char *return_pointer;
static char string_buffer[MAX_WORD_SIZE];
return_pointer = &string_buffer[sizeof(string_buffer)-1]; 
*return_pointer = '\0';
声明

return_pointer = &string_buffer[sizeof(string_buffer)-1];   
正在将
string\u buffer
的最后一个元素的地址分配给
return\u指针

声明

*return_pointer = '\0';  
只是用空字符终止
字符串\u缓冲区。

语句

return_pointer = &string_buffer[sizeof(string_buffer)-1];   
正在将
string\u buffer
的最后一个元素的地址分配给
return\u指针

声明

*return_pointer = '\0';  

只是用空字符终止
string\u buffer

在该行中您不理解的是什么?它似乎用于在缓冲区中的最后一个字符终止字符串。可能以后还需要使用
return\u pointer
,但正如代码段所示,最后两行可以通过以下方式完成:
string_buffer[sizeof(string_buffer)-1]='\0'。也许这有助于澄清。在任何一种情况下,他们都要确保缓冲区的最后一个字节是空的(
'\0'
)。我想也可能是为了可读性。在那一行中你不明白的是什么?它似乎是用来在缓冲区的最后一个字符处终止字符串的。可能以后还需要
返回\u指针
,但正如代码片段所示,最后两行可以通过以下方式完成:
string_buffer[sizeof(string_buffer)-1]='\0'。也许这有助于澄清。在任何一种情况下,他们都要确保缓冲区的最后一个字节是空的(
'\0'
)。我想也可能是为了可读性。另外,如果我使用*--ptr_return=*message++;我是在用指针递增地址吗?你需要这样做。另外,如果我使用*--ptr_return=*message++;我是在递增地址,然后使用指针。你需要。