조사하는 동안 일반 규칙을 해킹 하려고 시도 C
하고 메모리 주소를 변수에 저장하려고 시도했지만 코드가 실패했습니다.분할 오류(코어 덤프)64비트 시스템에서 실행하는 경우. 그 이유는 4/8비트(32/64비트 시스템) 메모리 때문입니다. 문제는 uintptr_t
두 시스템을 모두 만족시키기 위해 어떤 기본 유형이 필요합니까?(아님) 입니다. long long int
? 내 출처:
int main() {
int i;
char char_array[5] = {'a', 'b', 'c', 'd', 'e'};
unsigned int hacky_nonpointer;
hacky_nonpointer = (unsigned int) char_array;
for(i=0; i < 5; i++) {
printf("[hacky_nonpointer] points to %p, which contains the char '%c'\n",
hacky_nonpointer, *((char *) hacky_nonpointer));
hacky_nonpointer = hacky_nonpointer + sizeof(char);
}
}
답변1
적절한 포인터 유형을 사용하십시오.
#include <stdio.h>
int main() {
int i;
char char_array[5] = {'a', 'b', 'c', 'd', 'e'};
char *char_pointer = char_array;
for(i=0; i < 5; i++) {
printf("[char_pointer] points to %p, which contains the char '%c'\n",
char_pointer, *char_pointer);
char_pointer++;
}
}