약식데스암호 코딩 중에서 질문인데요...
글쓴이: seojh1431 / 작성시간: 일, 2014/05/25 - 2:07오후
void main()
{
int *test;
test=aaa();
printf("%d %d %d %d %d %d", test[1],test[2],test[3],test[4],test[6],test[5]);
}
int aaa(void)
{
int aa[10]={1,5,4,6,34,3,2,3,4};
return aa;
}
제가 대스암호를 코딩하고 있는데 짜는 과정에 위 소스처럼(그냥 위 코드는 예시이구요, 코드 받아서 오류 수정해주실 분 드릴 수 있어요 메일 남기시면..) main에서 aaa를 호출하면 aa라는 배열을 반환하고 메인에서는 그것을 test라는 포인터변수로 받아주고 있는데
지금 데스 코딩하면서 위 과정과 같이 다른함수에서(대스에서는 제가 선언한 함수에서 리턴값을 받습니다.) 라운드(라운드키를 생성합니다.) 라는 함수를 호출하면 포인터변수로 받거든요.. 근데 실행은 되는데
실행 과정에서 중단이 떠버리네요.. 이거 왜이런거죠??? 소스 드릴 수도 있어요~ 가르쳐주세요
Forums:
로컬변수는 외부에서 사용할 수 없습니다.
aaa안의 aa[]는 함수 안에서만 사용이 보장된 변수입니다. 그냥 포인터만 넘겨받으면 사용할 수가 없습니다.
외부에서 사용하시려면 몇 가지 방법이 있는데 상황에 따라 사용하시면 됩니다.
1. 정적 변수로 선언.
2. 전역 변수로 선언.
3. malloc, new등으로 heap으로부터 할당.
4. 포인터로 넘겨받지 말고 배열 자체를 복사.
등등등등..
--
댓글 달기