字符指针等于缓冲区加上缓冲区大小?
Char pointer equal to buffer plus buffer size?
谁能给我解释一下这段代码?或者确认我的看法?
char *buffer
分配指向"Hello World[=11=]"
buffer_size
是 12.
所以:
char *var = buffer + buffer_size - 1;
现在 *var
指向 "Hello World"
中的 'd'
,对吗?
如果仅按字符串长度,则指向'd'。
char_pointer + 0
指向字符串的开始'h'
,+1
指向'e'
所以+ n
指向第n + 1
特点。 char_pointer + buffer_size - 1 == 'd'
!
编辑:仅当 buffer_length
由 strlen
确定时才成立,这将给出 11
。如果它是 12
,其中包括终止 [=21=]
,它将指向那个。
H e l l o _ W o r l d [=10=]
0 1 2 3 4 5 6 7 8 9 10 11
如评论中所述,您应该像这样初始化 buffer
const char *buffer = "Hello World";
然后注意sizeof(buffer)
只是一个指针的大小,而不是字符串的长度。所以buffer_size
应该初始化为
size_t buffer_size = strlen( buffer ) + 1;
这会将 buffer_size
设置为 12。因此,如果您想要指向 d
的指针,则为
const char *var = buffer + buffer_size - 2;
指向 var
到 buffer[10]
。
谁能给我解释一下这段代码?或者确认我的看法?
char *buffer
分配指向"Hello World[=11=]"
buffer_size
是 12.
所以:
char *var = buffer + buffer_size - 1;
现在 *var
指向 "Hello World"
中的 'd'
,对吗?
如果仅按字符串长度,则指向'd'。
char_pointer + 0
指向字符串的开始'h'
,+1
指向'e'
所以+ n
指向第n + 1
特点。 char_pointer + buffer_size - 1 == 'd'
!
编辑:仅当 buffer_length
由 strlen
确定时才成立,这将给出 11
。如果它是 12
,其中包括终止 [=21=]
,它将指向那个。
H e l l o _ W o r l d [=10=]
0 1 2 3 4 5 6 7 8 9 10 11
如评论中所述,您应该像这样初始化 buffer
const char *buffer = "Hello World";
然后注意sizeof(buffer)
只是一个指针的大小,而不是字符串的长度。所以buffer_size
应该初始化为
size_t buffer_size = strlen( buffer ) + 1;
这会将 buffer_size
设置为 12。因此,如果您想要指向 d
的指针,则为
const char *var = buffer + buffer_size - 2;
指向 var
到 buffer[10]
。