일반 C, Windows 7 & HP 컴퓨터.memset에서 포인터 오프셋이 작동하지 않습니까?
int main(void) {
unsigned int a = 4294967295;
unsigned int *b = &a;
printf("before val: '%u'\n", *b); // expect 4294967295, got 4294967295
memset(b+2, 0, 1);
printf("after val: '%u'\n", *b);
// little endian 4th 3rd 2nd 1st
// expect 4278255615 - 11111111 00000000 11111111 11111111
// got 4294967295 - 11111111 11111111 11111111 11111111
return 0;
}
정수의 세 번째 바이트를 0x0으로 설정하려고하지만 동일하게 유지됩니다. 어떤 아이디어? 고맙습니다.
내 컴퓨터에서 int는 32 비트입니다.
실제로 비트 AND 연산자를 사용하여 할 거라고, 당신은 (INT의 *)'에 대해 아무것도지지 않습니다 0 + 1 '그것이'! = 0', 이후 널 포인터 것을 제외 특별히 처리 될 수 있습니다. –
@larsmans bah humbug : P NULL도 0이라고 가정 할 수 없습니다. P하지만 내 게시물을 변경했습니다. 힘내 친구 야. –
오른쪽으로, 유형의 크기만큼 증가합니다. 완전 무언가. 고맙습니다. 1 분 안에 수락하십시오. – jn1kk