Cs에서 포인터 연산을 수행하는 가장 깨끗한 방법은 무엇입니까? 주소에 n
바이트를 추가하려고합니다.C++ 클린 포인터 산술
int *foo;
foo = static_cast<int*> (static_cast<unsigned int>(foo) + sizeof(T))
나중에이 정도면 충분 다르게
char* somestr = reinterpret_cast<char*>(foo)
foo는 개주 및 사용할 수 있을까? 이제 포인터 구현 dosent 모든 포인터 (char*
, int*
) 같은 크기로 구현 된 보장합니다. 따라서 int*
(foo*
이어야 함)인지 확실하지 않고 수학에 부호없는 int를 사용하는 것이 가장 깨끗한 해결책입니다. 또한 32 비트와 64 비트 모두에서 작동해야합니다.
왜 이런 짓을했는지. 그게 다 이상한 것은 아니지만. 다른 유형으로 동적으로 해석되는 데이터의 스트림 (또는 바이 패스)로 작업 할 때마다 언제든지이 문제를 해결할 수 있습니다.
여기서하고있는 일은 절대적으로 잘못되었거나 잘 이해할 수 없습니다 ... 저는 RTM에 제안합니다 : http://www.cs.umd.edu/class/sum2003/cmsc311/Notes/BitOp/pointer .html –
이 시대에 포인터 연산을 수행하는 합법적 인 사례는 극히 적습니다. 나는 당신이 해결하려고하는 것을 모른다. 그러나 당신은 그것을 필요로하지 않을 것이다. – David