Char指针等于缓冲区加缓冲区大小?

Ube*_*bez 1 c c++ buffer pointers

有人可以向我解释这段代码吗?或者确认一下我的看法?

char *buffer 分配给指向 "Hello World\0"
并且buffer_size是12.

所以:

char *var = buffer + buffer_size - 1;

现在*var指向'd'"Hello World",对不对?

use*_*109 6

H e l l o _ W o r l d \0
0 1 2 3 4 5 6 7 8 9 10 11
Run Code Online (Sandbox Code Playgroud)

正如评论中提到的,你应该buffer像这样初始化

const char *buffer = "Hello World";
Run Code Online (Sandbox Code Playgroud)

然后请注意,这sizeof(buffer)只是指针的大小,而不是字符串的长度.所以buffer_size应该初始化为

size_t buffer_size = strlen( buffer ) + 1;
Run Code Online (Sandbox Code Playgroud)

设置buffer_size为12.因此,如果你想要一个指针d,那就是

const char *var = buffer + buffer_size - 2;
Run Code Online (Sandbox Code Playgroud)

这点varbuffer[10].