횽들 내가 특정구조체의 멤버변수들의 사이즈와 크기를
안다고 할때 포인터하나로 접근하는 방법이 없을까?
예를들어
struct Student
{
int id; char name[20];
};
이런 구조체가 있다고 하면
int는 4바이트고 char 1바이트(컴파일러마다 다르지만)니
id는 4바이트 name은 20바이트야
그래서 구조체가 메모리에 있다면 시작번지부터 +4인 값부터 +24인값까지 문자열주면 name에 이름이 할당 될것같은데 말이지.
이 시작번지를 어떤 형태의 포인터로 접근해야 할지를 모르겠어...
궁극적으로 하려는 것은 이러한 것을 바탕으로 어떠한 구조체던지 처리할 수 있게 하는게 목표인데 말이야..
누가 힌트좀..
나도 알려줘
케릭터형포인터로 케스팅해서 접근해봐
ㅇ/ 나두 그 생각은 해봤는데 student타입이라 char타입으로 할당이 안되.. 전에 다른쪽에서 비트로 접근해서 처리하는 것을 봐서 비스무리하게 해볼려다 망함.
위험하지 않을까 특히나 저렇게 1바이트짜리가 섞여있을 때는 저대로 된다는 보장도 없는데
나다라마법사/ 괜찮음. 혼자 테스트용으로 해보는것이니.. 고객납품용(?)으로 저런짓은 안함..
나다라마법사/그리고 구조체를 분석해서 타입이랑 사이즈 잡아줄 생각이라 괜찮지 않을까용?
표준안에 저거에 대한 거 안 다루지 않음?
dot/죄송 잘 모름...허접이라... 누가 떡밥을 던져서 내가 물었음. ㅠ.ㅠ 몇일 고민중...
고객납품용...ㅋㅋㅋ
일광면/ㅋㅋ. 저런것 회사에서 했다간 깨짐....
에라 모르겠다 reinterpret_cast<>
나다라마법사/횽 고마비
아키텍처마다 다르고 컴파일러마다 다르다. 컴파일러가 패딩을 얼마나 할지 예상하고 짜면 안됨. 대신에 offsetof 라는 매크로를 제공하니까 name의 시작주소를 알고 싶으면 가장 간단하게는 struct Student s일 때 &s.name[0] 으로 접근하거나 (void*)(&s) + offsetof(Student, name) 으로 접근하면 된다
\"멤버변수들의 사이즈와 크기를 안다고 할때\" 라고 했는데 코딩할때는 항상 변수 크기를 알 수 없다고 가정하고 코딩해라
kukyakya/고마비. 근데 떡밥 던진 사람이 long* 인가 뭔가 어떤 포인터로 변환 접근이 가능할거라고 던져서 머리속에서 떠나질 안네 ㅠ.ㅠ