2014-12-15 3 views
0

범위 (0 - a) 내에서 임의의 숫자를 만들고 포인터 b 및 c를 사용하여 반환하려합니다.포인터가있는 임의의 숫자 (C)

#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 

void random (int a, int *b, int *c) 
{ 
    srand(time(0)); 
    *b = rand()%(a+1); 
    *c = rand()%(a+1); 
    printf("%i%i", *b, *c); 
} 

int main() 
{ 
    int a = 10; // upp 
    int* b; 
    int* c; 
    random (a, b, c); 
} 

코드는 작동하지만 random() 후에도 실행 파일이 충돌합니다.

크래시가 발생하는 이유는 무엇입니까?

+0

'b'와'c'는 전에 뭔가를 가리 키도록해야합니다 ... 포인터입니다 그들을 역 참조 할 수있다 – Mgetz

답변

3

실제 정수를 가리키는 포인터가 필요합니다. 이 작업을 쉽게 수행하는 방법은 다음과 같이 intbc를 선언하고 자신의 주소를 전달하는 것입니다 :

int main() 
{ 
    int a = 10; // upp 
    int b = 0; 
    int c = 0; 
    random (a, &b, &c); 
} 
+1

고마워! 그게 내 문제를 완전히 해결했다. – s55michi

+2

완전하지 않습니다. srand()를 함수 외부로 옮겨서 함수를 한번만 호출 할 계획이 아니라면 속한 main()에 넣어야합니다. –

+0

@LeeDanielCrocker 그건 좋은 지적입니다. 나는 단지 충돌을 해결하는 것을 정말로보고 있었다. 코드가 올바르게 작동하게하는 것이 다음 단계입니다. – Caleb