C++을 배우고 싶습니다. 여기 초보자 용 질문입니다.중첩 된 구조체 C++
#include <iostream>
#include <string>
using std::cout;
using std::endl;
struct student{
struct address{
int no;
std::string city; //problem is here
};
char grade;
int num;
address *addr;
};
int main(){
student st1;
student *pSt1 = &st1;
pSt1->grade = 'A';
pSt1->num = 1234;
pSt1->addr->no = 123;
pSt1->addr->city = "Imladris";
return 0;
}
이 충돌하지만이 같은 std::string city
을 변경하지 않는 경우 : 어떤 경우에
struct student{
struct address{
std::string city; // here
int no;
};
char grade;
int num;
address *addr;
};
이 충돌하고 0을 반환하지 않습니다 ... 오류도 경고. 어쩌면 여기에 포인터를 사용할 필요가 없지만 제가 말했던 것처럼 저는 C++을 배우고 있습니다. 이것은 포인터/구조체에 대한 샘플 코드입니다.
나는 그것을 고치는 방법을 알고 있지만 왜 깨지는 지 이해하고 싶습니다. 나는 string city의 선언 순서를 변경하고 충돌하지 않는다. 왜?
경고와 함께 컴파일하고 컴파일러를 청취하십시오. – Nelfeal
그리고 "작동"과 "작동하지 않음"이란 의미 (컴파일 오류, 프로그램 충돌, 예기치 않은 결과 ...) – SJuan76
"작동 여부"는 무엇을 의미합니까 ?? 우리에게 컴파일러 오류나 sth 같은 것을 보여주십시오. –