如何在 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 中存在的严格别名规则。
假设我有以下内容:
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 中存在的严格别名规则。