char 포인터를 int 포인터로 캐스팅-버퍼 오류 10

Eatonphil

답변 에서 저자는 C에서 포인터를 캐스팅하는 방법에 대해 논의했습니다. 나는 이것을 시도하고 다음 코드를 구성했습니다.

#include <stdio.h>

int main(void) {
    char *c;
    *c = 10;
    int i = *(int*)(c);
    printf("%d", i);
    return 1;
}

이것은 (경고와 함께) 컴파일되고 바이너리를 실행하면 bus error: 10. 나는 char가 int보다 작은 크기라는 것을 이해합니다. 나는 또한이 게시물 에서이 오류를 예상해야 함을 이해 합니다. 그러나 누군가 여기서 무슨 일이 일어나고 있는지 명확히 할 수 있다면 정말 감사하겠습니다. 또한 포인터를 캐스팅하고 int 포인터를 역 참조하여 10을 얻는 올바른 방법이 있는지 알고 싶습니다 (이 예제에서는). 감사!

편집 : 내 의도를 명확히하기 위해, 걱정된다면 포인터 캐스팅의 "작동하는"예제를 생각해 보려고합니다. 이것은 단지이 허용되는 쇼이다 힘의 C.에서 작업

칼 노럼

c역 참조하면 초기화되지 않습니다. 그것은 정의되지 않은 행동입니다.

마찬가지로, 경우에도 c 초기화, 당신에게 그것의 배역 int *다음 역 참조는 정의되지 않은 동작입니다 메모리에서 추가 바이트, 어떤 수를 얻을 것입니다.

시도중인 작업을 보여주는 작동하는 (안전한) 예 :

int main(void)
{
    int i = 10;
    int *p = &i;
    char c = *(char *)p;
    printf("%d\n", c);
    return 0;   
}

이 프로그램은 10little-endian 기계와 0big-endian 기계에서 인쇄합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

int에 대한 void 포인터 형식 캐스팅 오류

분류에서Dev

버퍼에서 포인터 캐스팅

분류에서Dev

char 포인터로 캐스팅

분류에서Dev

Char to Int 포인터 캐스팅이 작동하지 않음

분류에서Dev

C ++ "버스 오류 : 10"및 포인터 작업

분류에서Dev

C-char 배열을 정수 포인터로 캐스팅?

분류에서Dev

new int [10] [3]에서 int ** 포인터로 return을 캐스팅 할 때이를 사용하는 프로그램은 다음을 출력합니다. Segmentation fault : 11?

분류에서Dev

char 포인터 및 문자열 리터럴 오버로드

분류에서Dev

char 포인터 및 문자열 리터럴 오버로드

분류에서Dev

병합으로 인해 캐스팅 오류 DATETIME-> INT

분류에서Dev

포인터를 정수로 캐스팅

분류에서Dev

포인터를 long으로 캐스팅

분류에서Dev

구조체에서 char 포인터 오버플로 방지

분류에서Dev

출력 파일 'int'쓰기 오류가 버퍼 인터페이스를 지원하지 않습니다.

분류에서Dev

unsigned char * buffer를 인자를받을 수있는 호출 가능한 void 포인터로 캐스팅

분류에서Dev

포인터를 다른 포인터로 캐스팅

분류에서Dev

int에 대한 포인터 타입 캐스팅.

분류에서Dev

int 포인터 유형 캐스팅 실패

분류에서Dev

c 오류 : 할당은 캐스트없이 포인터에서 정수를 만듭니다. [-Werror = int-conversion]

분류에서Dev

Stan 오류 캐스팅 매개 변수를 int로

분류에서Dev

구조체의 int 멤버를 char *로 캐스팅하여 직렬화하면 역 직렬화 할 때 int * 형식으로 캐스팅해야합니까?

분류에서Dev

캐스팅 포인터?

분류에서Dev

객체 포인터에 대한 멤버 변수 포인터 타입 캐스팅

분류에서Dev

멤버 포인터에서 전체 구조체 / 클래스로 캐스팅

분류에서Dev

구조에 새 포인터를 할당하려고 할 때 스택 오버플로 오류

분류에서Dev

thrust :: device_vector <int>를 원시 포인터로 작동하도록 캐스팅하는 방법

분류에서Dev

분할 오류를 일으키는 c의 char 포인터

분류에서Dev

xcode 빌드 오류 : 포인터에서 더 작은 유형 'int'로 캐스트 된 의미 문제가 정보를 잃습니다.

분류에서Dev

xcode 빌드 오류 : 포인터에서 더 작은 유형 'int'로 캐스트 된 의미 문제가 정보를 잃습니다.

Related 관련 기사

  1. 1

    int에 대한 void 포인터 형식 캐스팅 오류

  2. 2

    버퍼에서 포인터 캐스팅

  3. 3

    char 포인터로 캐스팅

  4. 4

    Char to Int 포인터 캐스팅이 작동하지 않음

  5. 5

    C ++ "버스 오류 : 10"및 포인터 작업

  6. 6

    C-char 배열을 정수 포인터로 캐스팅?

  7. 7

    new int [10] [3]에서 int ** 포인터로 return을 캐스팅 할 때이를 사용하는 프로그램은 다음을 출력합니다. Segmentation fault : 11?

  8. 8

    char 포인터 및 문자열 리터럴 오버로드

  9. 9

    char 포인터 및 문자열 리터럴 오버로드

  10. 10

    병합으로 인해 캐스팅 오류 DATETIME-> INT

  11. 11

    포인터를 정수로 캐스팅

  12. 12

    포인터를 long으로 캐스팅

  13. 13

    구조체에서 char 포인터 오버플로 방지

  14. 14

    출력 파일 'int'쓰기 오류가 버퍼 인터페이스를 지원하지 않습니다.

  15. 15

    unsigned char * buffer를 인자를받을 수있는 호출 가능한 void 포인터로 캐스팅

  16. 16

    포인터를 다른 포인터로 캐스팅

  17. 17

    int에 대한 포인터 타입 캐스팅.

  18. 18

    int 포인터 유형 캐스팅 실패

  19. 19

    c 오류 : 할당은 캐스트없이 포인터에서 정수를 만듭니다. [-Werror = int-conversion]

  20. 20

    Stan 오류 캐스팅 매개 변수를 int로

  21. 21

    구조체의 int 멤버를 char *로 캐스팅하여 직렬화하면 역 직렬화 할 때 int * 형식으로 캐스팅해야합니까?

  22. 22

    캐스팅 포인터?

  23. 23

    객체 포인터에 대한 멤버 변수 포인터 타입 캐스팅

  24. 24

    멤버 포인터에서 전체 구조체 / 클래스로 캐스팅

  25. 25

    구조에 새 포인터를 할당하려고 할 때 스택 오버플로 오류

  26. 26

    thrust :: device_vector <int>를 원시 포인터로 작동하도록 캐스팅하는 방법

  27. 27

    분할 오류를 일으키는 c의 char 포인터

  28. 28

    xcode 빌드 오류 : 포인터에서 더 작은 유형 'int'로 캐스트 된 의미 문제가 정보를 잃습니다.

  29. 29

    xcode 빌드 오류 : 포인터에서 더 작은 유형 'int'로 캐스트 된 의미 문제가 정보를 잃습니다.

뜨겁다태그

보관