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

How to find a unicode char pointer in a void pointer?

假设我有以下内容:

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

如何确定 unicode 字符指针 x 是否在 void* y 缓冲区内?

基本上

如果大海捞针是空指针,而针是unicode字符指针,如何大海捞针?

如果您知道缓冲区的字节长度,就可以这样做。

#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 中存在的严格别名规则。