55.6 연습문제: 게임 캐릭터 구조체 사용하기
다음 소스 코드를 완성하여 334 1.240000가 출력되게 만드세요.
practice_declare_struct_champion.c
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #include <stdlib.h> struct Stats { float health; float healthRegen; unsigned int mana; float manaRegen; float range; float attackDamage; float armor; float attackSpeed; float magicResist; unsigned int movementSpeed; }; struct Champion { char name[20]; struct Stats stats; float abilityPower; }; int main() { _____________________________________________ strcpy(lux->name, "Lux"); lux->stats.health = 477.72f; lux->stats.healthRegen = 1.08f; lux->stats.mana = 334; lux->stats.manaRegen = 1.24f; lux->stats.range = 550; lux->stats.attackDamage = 55.5f; lux->stats.attackSpeed = 0.625f; lux->stats.armor = 18.72f; lux->stats.magicResist = 30; lux->stats.movementSpeed = 330; lux->abilityPower = 0; printf("%u %f\n", lux->stats.mana, lux->stats.manaRegen); free(lux); return 0; }
실행 결과
334 1.240000
정답
struct Champion *lux = malloc(sizeof(struct Champion));
해설
구조체 멤버에 접근할 때 lux->stats.mana처럼 접근하고 있으므로 lux는 포인터입니다. 따라서 struct Champion *lux = malloc(sizeof(struct Champion));와 같이 포인터를 선언한 뒤 malloc 함수로 메모리를 할당해주면 됩니다.