C 구조체, 구조체에 대한 공용체 포인터

Wlamers

typedeffed 구조체와 공용체가 있습니다. 공용체에는 구조체와 단일 uint32_t. 목표는 foo구조체의 '비트'에 해당 하는 값을 할당하는 것입니다 .

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>

typedef struct {
    uint32_t valA :1;
    uint32_t valB :1;
    uint32_t valC :1;
    uint32_t valD :1;
    uint32_t valE :1;
} ValStruct_Type;

typedef union {
    ValStruct_Type valStruct;
    uint32_t valUint;
} ValUnion_Type;

uint32_t foo = 0;


int main(void)
{
    ValStruct_Type Vals;
    Vals.valA = 0x0;
    Vals.valB = 0x1;
    Vals.valC = 0x0;
    Vals.valD = 0x1;
    Vals.valE = 0x1;

    ValStruct_Type *Vals_ptr;
    Vals_ptr = &Vals;

    foo = ((ValUnion_Type *)Vals_ptr)->valUint;

    return 0;
}

foo는 다음과 같습니다.

Decimal:    4194330
Hex:        0x40001a
Binary:     10000000000000000011010

여기서 무슨 일이 일어나고 있는지 정확히 설명 할 수있는 사람은 누구입니까 (구조체 포인터에 대한 유니온 포인터, 유니온 멤버에게 연기 됨)?

둘째 : foo비트 1,3 및 4에 추가로 비트 22가 설정된 이유는 무엇입니까?

mah

정의되지 않은 동작으로 인해 비트 22가 설정되었습니다. 완전히 초기화하지 않은 지역 변수를 만든 다음 5 비트를 설정합니다. 나머지 비트는 초기화되지 않은 로컬의 경우에 발생하는 모든 것입니다.

질문의 첫 부분에 대해 ... 명확하지 않은 것은 무엇입니까? 귀하의 질문 ( union pointer to a struct pointer, defererenced to a union member)이 저절로 대답하는 것 같습니다. 이미있는 유형으로 무언가를 캐스팅해도 효과가 없습니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

c-구조체 내부 구조체에 대한 void 포인터

분류에서Dev

구조체와 구조체에 대한 포인터 사용

분류에서Dev

float C 배열에 대한 공용체 유형 (구조체도 포함)의 포인터

분류에서Dev

C에서 구조체에 대한 포인터 반환

분류에서Dev

C ++에서 구조체에 대한 포인터 초기화

분류에서Dev

c 구조체에 대한 자유 임시 포인터

분류에서Dev

C-구조체에 대한 포인터

분류에서Dev

c의 구조체에 대한 포인터 sizeof

분류에서Dev

구조체 내의 동적 배열에 대한 포인터 C

분류에서Dev

C-동적 구조체 배열에 대한 포인터

분류에서Dev

구조체 var에 대한 포인터

분류에서Dev

구조체 내부 구조체에 대한 이중 포인터

분류에서Dev

C ++ 포인터에서 배열의 대상 구조체를 포함하여 구조체에 대한 값 읽기

분류에서Dev

불완전한 유형 구조체에 대한 C 역 참조 포인터

분류에서Dev

C에서 명명되지 않은 구조체에 대한 포인터 사용?

분류에서Dev

char 포인터 참조에 대한 typecast 구조체 포인터

분류에서Dev

POD 구조체에 대한 C / C ++ 포인터도 첫 번째 구조체 멤버를 가리 킵니다.

분류에서Dev

공용체를 포함한 c 구조체 초기화

분류에서Dev

C에서 구조체의 멤버 인 배열에 대한 포인터 산술

분류에서Dev

C의 구조체에 대한 포인터 배열에서 정보 얻기

분류에서Dev

c에 정의 된 구조체에 대한 Swift 정의 이중 포인터

분류에서Dev

C에서 중첩 된 구조체 포인터에 대한 코드 생성

분류에서Dev

함수에 전달 된 구조체의 배열에 대한 C 포인터

분류에서Dev

구조체의 포인터에 대한 포인터 초기화

분류에서Dev

구조체 내부에 구조체에 대한 포인터 배열 만들기

분류에서Dev

구조체 배열에 대한 포인터를 반환하는 C # marhsal 함수

분류에서Dev

malloc-expression 예상 오류 C가있는 구조체에 대한 포인터

분류에서Dev

C의 구조체 유형에 대한 포인터 캐스팅 이해

분류에서Dev

구조체 충돌에 대한 C ++ 연결된 목록 포인터

Related 관련 기사

  1. 1

    c-구조체 내부 구조체에 대한 void 포인터

  2. 2

    구조체와 구조체에 대한 포인터 사용

  3. 3

    float C 배열에 대한 공용체 유형 (구조체도 포함)의 포인터

  4. 4

    C에서 구조체에 대한 포인터 반환

  5. 5

    C ++에서 구조체에 대한 포인터 초기화

  6. 6

    c 구조체에 대한 자유 임시 포인터

  7. 7

    C-구조체에 대한 포인터

  8. 8

    c의 구조체에 대한 포인터 sizeof

  9. 9

    구조체 내의 동적 배열에 대한 포인터 C

  10. 10

    C-동적 구조체 배열에 대한 포인터

  11. 11

    구조체 var에 대한 포인터

  12. 12

    구조체 내부 구조체에 대한 이중 포인터

  13. 13

    C ++ 포인터에서 배열의 대상 구조체를 포함하여 구조체에 대한 값 읽기

  14. 14

    불완전한 유형 구조체에 대한 C 역 참조 포인터

  15. 15

    C에서 명명되지 않은 구조체에 대한 포인터 사용?

  16. 16

    char 포인터 참조에 대한 typecast 구조체 포인터

  17. 17

    POD 구조체에 대한 C / C ++ 포인터도 첫 번째 구조체 멤버를 가리 킵니다.

  18. 18

    공용체를 포함한 c 구조체 초기화

  19. 19

    C에서 구조체의 멤버 인 배열에 대한 포인터 산술

  20. 20

    C의 구조체에 대한 포인터 배열에서 정보 얻기

  21. 21

    c에 정의 된 구조체에 대한 Swift 정의 이중 포인터

  22. 22

    C에서 중첩 된 구조체 포인터에 대한 코드 생성

  23. 23

    함수에 전달 된 구조체의 배열에 대한 C 포인터

  24. 24

    구조체의 포인터에 대한 포인터 초기화

  25. 25

    구조체 내부에 구조체에 대한 포인터 배열 만들기

  26. 26

    구조체 배열에 대한 포인터를 반환하는 C # marhsal 함수

  27. 27

    malloc-expression 예상 오류 C가있는 구조체에 대한 포인터

  28. 28

    C의 구조체 유형에 대한 포인터 캐스팅 이해

  29. 29

    구조체 충돌에 대한 C ++ 연결된 목록 포인터

뜨겁다태그

보관