如何在void指针中找到unicode char指针?

时间:2015-11-14 01:44:06

标签: c void-pointers wchar-t

假设我有以下内容:

wchar_t *x = L"myname";
void *y = 0; // assume that p is already assigned previously to any given buffer

如何判断unicode char指针x是否在void * y缓冲区内?

基本上

如果干草堆是一个无效指针,并且针是unicode char指针,我如何在大海捞针中找到针?

1 个答案:

答案 0 :(得分:1)

如果你知道缓冲区的长度(以字节为单位),你可以这样做。

#include <stdbool.h>
char *tmp = x; //you can do byte arithmetic on char*, but not on void*
bool is_in_buffer = ((char*)y >= tmp && (char*)y < tmp + length);

因为你知道缓冲区的长度并且缓冲区存储在连续的内存中,如果y在缓冲区的范围内,你知道y在缓冲区中。

请注意,您只能将非char类型的指针指定给char和void。否则会违反严格的别名规则,该规则存在于C99和C11中。