메모리에 따른 구조체 변수와 포인터 사용법


main.c

굉장히 중요한 기술이므로 꼭 숙지 해놓자!!


구조체 배열의 선언 및 접근의 방법이 일반적인 배열의 선언 및 접근의 방벙과 다르지 않듯이, 구조체 포인터 변수의 선언 및 연산의 방법도 일반적인 포인터 변수의 선언 및 연산의 방법과 다르지 않다.


main1.c



포인터 변수를 구조체의 멤버로 선언하기


main2.c


main3.c


구조체 변수의 주소 값과 첫 번째 멤버의 주소 값 

구조체 변수의 주소 값은 구조체 변수의 첫 번째 멤버의 주소 값과 동일.


main4.c



구조체의 정의와 typedef 선언

typedef int INT;    ->    int의 또 다른 이름 INT를 부여!

컴파일러에게 전달하게 됨.

typedef struct smart Smart; -> struct smart구조체의 또 다른 이름 Smart를 부여!


main5.c


main6.c


main7.c


함수로의 구조체 변수 전달과 반환

구조체를 인자로도 쓸 수 있고 반환값으로도 넘길 수 있다.

될 수 있으면 쓰지마라.

(통으로 쓰기 때문에 통째로 복사된다. 같은 용량이 동시에 존재해서 메모리가 두배로 든다.)

한다면 주소값으로 넘겨라.


함수의 인자로 전달되고 return문에 의해 반환되는 구조체 변수



main8.c


main10.c