▶ 위의 예시와 같이 구조체 변수의 선언과 접근은 아래와 같다.
struct type_name val_name //구조체 변수선언의 기본 형태
구조체 이름 /구조체 변수이름
즉, 위의 구조체 student에 구조체 변수를 선언하고자 한다면,
struct student Namja; 와 같이 선언 할수가 있다.
Namja구조체 변수 안에는
이제 struct student boy;의 명령이 간편하게 Student boy; 로 줄었다.
그래서 많은 프로그래머들이 변수의 이름의 첫글자를 대문자로 지정하여 구조체의 선언시 typedef가 적용된 형태의 축약형을 많이 사용한다. 생략가능함을 염두해 두고 코드를 유념해서 보기를 바란다.
▶ 구조체의 또다른 접근법 : 포인터 연산자 ->
이는 위의 구조체 멤버변수 접근방식 (직접방식)과는 다른 방법으로써, 간접접근 방식이라 할수가 있다.
(대부분 힙에 할당된 기억장소에 접근할 때)
= 포인터와 같은 참조변수를 이용하여 구조체 변수의 주소값에 접근하기 위해서 -> 연산자를 사용하여 접근한다.
예를 들어보자.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct smartphone //다음부터 smartphone만 입력하면 구조체 선언을 하도록 typedef 선언
{
char name[30];
int price;
}Apple; // 구조체의 선언과 구조체 변수 apple의 선언.
int main(void)
{
Apple *applephone; //구조체변수 Apple형의 참조변수 applephone선언
applephone = (Apple*) malloc(sizeof(30)); //힙에 메모리를 할당하라.
//(Apple*)는 형을 의미하고, 30 메모리 만큼의 동적할당값을 applephone 참조변수에게 할당하라.
strcpy(Apple->name, "아이폰5");
Apple->price = 800;
printf("%s %d \n", Apple->name, Apple->price);
free(applephone);
return 0;
}
메모리 동적할당에 대한 자세한 설명은, 아래의 블로그 게시글을 참고하자.
http://rus1031.blog.me/80187120151
'Engineering > C Language' 카테고리의 다른 글
[C언어] 메모리구조와 동적할당 (0) | 2014.02.21 |
---|---|
[본문스크랩] enum의 사용법 (1) | 2014.01.28 |
[C언어] 포인터 사용하기-2 (0) | 2014.01.15 |
[C언어] 포인터 사용하기-1 (0) | 2013.11.30 |
[C언어] 기본적인 개념들 (0) | 2013.11.28 |