아래 코드에서 Struct, 포인터 및 typedef를 실험하고 있습니다. 내가 만든 구조체에 대한 포인터를 만들고 싶습니다. 그런 다음-> 연산자를 사용하여 구조체의 멤버를 조작하고 싶습니다.
아래 코드는 잘 컴파일되지만 프로그램을 실행하면 세그먼트 오류가 발생합니다.
누군가 내 논리가 어디에서 잘못되었는지 설명해 주시겠습니까?
감사합니다.
struct Structure1 {
char c;
int i;
float f;
double d;
};
typedef Structure1* structp;
int main(){
structp s1, s2;
s1->c = 'a';
s1->i = 1;
s1->f = 3.14;
s1->d = 0.00093;
s2->c = 'a';
s2->i = 1;
s2->f = 3.14;
s2->d = 0.00093;
}
structp s1, s2;
두 포인터를 선언했습니다, s1
그리고 s2
하지만 그들은 아무데도 아직 가리 키지 않습니다! 를 사용하여 이러한 포인터에 메모리를 할당해야합니다 new
.
s1 = new Structure1();
s1->c = 'a';
s1->i = 1;
// ...
나중에 메모리를 삭제하는 것을 잊지 마십시오.
delete s1;
괄호 가 차이 를 만드는 이유에 대한 답변을 참조하십시오 new Structure1()
. 또한 &
연산자 를 사용하는 것과 같이 객체에 대한 포인터를 얻는 다른 방법 이 있지만이 특별한 경우에는 메모리를 할당하고 싶다고 생각합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다