:: 게시판
:: 이전 게시판
|
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
통합규정 1.3 이용안내 인용"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
09/11/27 23:05
레버딘님// 주소값을 대입해 버리면 지역 변수인 i는 jokbo()가 끝나면서 없어지는 것 아닌가요?
즉, printresult()에서 사용이 불가능한게 아닌지요..? 지구사랑님// struct player player; 가 옳지 않다는 말씀이신지요...? card의 정의는 윗부분에 있구요.. 질문에 필요하다고 생각 되는 내용만 간추려서 올렸습니다.
09/11/27 23:14
한 단계 한 단계 코드가 실행될 때마다 printf문을 넣어주면서(예를 들면, for문 하나 끝나고 phase 1 end 와 같은 메시지를 출력하게 한다거나) 어디에서 그런 에러가 나면서 프로그램이 멈추는 지 찾아보세요.
09/11/27 23:39
최대한 비슷하게 만들어봤습니다. 코드 보시면 뭐가 잘못됐는지 아실 수 있을꺼예요~
#include <stdio.h> #include <stdlib.h> #define MAX_PLAYER_NUM 10 #define MAX_CARD_NUM 7 struct player int pcard[MAX_CARD_NUM]; int* top; typedef struct player player; void jokbo(int *, int, int *); void printresult(player *); int main(void) int i; player players[MAX_PLAYER_NUM]; for ( i = 0; i < MAX_PLAYER_NUM; i++ ) { players[i].top = (int*)malloc(sizeof(int)); jokbo(players[i].pcard, i * 10, players[i].top); printresult(players); for ( i = 0; i < MAX_PLAYER_NUM; i++ ) free(players[i].top); return 0; } void jokbo(int* pcard, int num, int* top) int i; for ( i = 0; i < MAX_CARD_NUM; ++i ) { *(pcard + i) = (num + 1) * 10; *top = num * 999; } void printresult(player* p_pstP) int i, j; for ( i = 0; i < MAX_PLAYER_NUM; ++i ) { for ( j = 1; j < MAX_CARD_NUM; ++j ) { printf("%d\t", (p_pstP + i)->pcard[j]); printf("top: %d\n", *((p_pstP + i)->top)); } printf("--------------------------\n"); }
09/11/27 23:52
Je ne sais quoi님//
지역변수(스택영역 이던가요?)를 malloc으로 힙 영역(?)으로 잡아서 함수가 끝나도 날아가지 않게 한건가요?? 코드를 보고 수정하니 잘 되네요. 감사합니다 (_ _)
|