C 19Day (20160202)
by jennysgap포인터의 포인터
(메모리 상의 구조를 그림으로 표현해보기!)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #include <stdio.h> int main(void) { double num = 3.14; double * ptr = # double ** dptr = &ptr; double * ptr2; printf("%9p %9p \n", ptr, *dptr); //%p 주소형태로 출력 printf("%9g %9g \n", num, **dptr); //%g 실수형태로 출력 ptr2 = *dptr; *ptr2=10.99; printf("%9g %9g \n", num, **dptr); return 0; } | cs |
포인터 배열과 포인터 배열의 포인터 형
(메모리 상의 구조를 그림으로 표현해보기!)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #include <stdio.h> int main(void) { int num1=10, num2=20, num3=30; int *ptr1 = &num1; int *ptr2 = &num2; int *ptr3 = &num3; int * ptrArr[]={ptr1,ptr2, ptr3}; //포인터배열 각 값에는 주소값이 입력됨 int **dptr = ptrArr; //int **dptr = &ptrArr[0] printf("%d %d %d \n", *(ptrArr[0]), *(ptrArr[1]), *(ptrArr[2])); printf("%d %d %d \n", *(dptr[0]), *(dptr[1]), *(dptr[2])); return 0; } | cs |
당신은 게임프로그래머입니다.
RPG 장르, 유저들의 캐릭터 생성을 하는데 필요한 것들은?
name
level
능력치 (str, dex, int, luk)
1 2 3 4 5 6 | #include <stdio.h> int main(void) { char name[10]; int level, str, dex, luk; } | cs |
구조체 (=사용자 정의 자료형)
하나 이상의 변수를 그룹 지어서 새로운 자료형을 정의하는 것
(정의만 한 것!, 메모리 할당 No, 변수선언(구조체변수) 해야 메모리 할당됨)
붙어 다니게 되는 데이터들은 하나로 묶어서 관리하는 것이 편리하다.
(관련있는 데이터를 그룹지어 새로운 자료형을 정의)
구조체의 쓰임
복잡한 데이터를 표현할 때 구조화 하여 정의
윈도우 운영체제는 대부분 구조체로 이루어져 있다.
표현하고자 하는 객체에 대해서 구조화 한다.
ex) 학생 : 나이, 성별, 이름, 성적 등
ex) 도서정보 : 저자, 판매가격, 출판사, 출판날짜 등
ex) 게임유저 : 보유한 돈, 능력치, 아이템, 현재위치 등
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include <stdio.h> struct mk_char //구조체 정의 (=새로운 자료형을 만들었다.) { char name[20]; int level, str, dex, luk; }; /*함수가 아니기 때문에 세미클론(;)입력*/ int main(void) { // 자료형 변수명; struct mk_char user1; //구조체변수를 선언 scanf("%s", user1.name); user1 . level=1; //각 구조체 멤버에 값을 입력 user1 . str=10; user1 . dex=999; user1 . luk=10; printf("%s\n", user1.name); printf("%d %d %d %d\n", user1.level, user1.str, user1.dex, user1.luk); } | cs |
NPC같은 경우 유저처럼 이름을 부여 받는 것이 아닌
캐릭터가 생성동시에 이름도 부여되어 있습니다.
문자를 복사해줄 수 있는 함수 strcpy()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include <stdio.h> #include <string.h> //strcpy 사용 struct mk_char { char name[20]; int level, str, dex, luk; }; int main(void) { struct mk_char npc; //npc.name="주먹펴고 일어서"; x strcpy(npc.name, "주먹펴고 일어서"); //문자열 복사할 때 사용하는 함수 printf("%s\n", npc.name); } | cs |
위 상황에서는 strcpy를 사용안하고 이름을 부여할 수 있음
(선언과 동시에 초기화)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include <stdio.h> struct mk_char { char name[30]; int level, str, dex, luk; }; int main(void) { struct mk_char npc={"주멱펴고 일어서", 0, 0, 0, 0}; //선언 & 초기화 printf("%s\n", npc.name); } | cs |
반응형
'BOX' 카테고리의 다른 글
자료구조 1Day (20160204) (0) | 2016.02.05 |
---|---|
C 20Day (20160203) (0) | 2016.02.03 |
C 18Day (20160201) (0) | 2016.02.02 |
C 17Day (20160129) (0) | 2016.01.31 |
C 16Day (20160128) (0) | 2016.01.31 |
블로그의 정보
jennysgap
jennysgap