2013-05-05 2 views
0

그래서 C 함수에서이 오류가 발생합니다.C 오류 : 이진 '연산자 *'에 'int *'및 'unsigned int'형식의 피연산자가 잘못되었습니다.

변수 :

int* first_array = (int*) malloc(0); 
int first_array_length; 

int* second_array = (int*) malloc(0); 
int second_array_length; 

// Setting up first array 
set_up_array(first_array, &first_array_length); 

그리고이 함수 :

void set_up_array(int *arr, int *num) 
{ 
    char lenght_msg[] = "Iveskite masyvo ilgi"; 
    char value_msg[] = "Iveskite masyvo elementa"; 

    *num = num_scan(0, MAX_SIZE, lenght_msg); 
    arr = (int*) realloc(arr, num * sizeof(int)); // <- error here 
    for (int i = 0; i < (*num); i++) 
    { 
     arr[i] = num_scan(INT_MIN, INT_MAX, value_msg); 
    } 
} 

이, 도와주세요!

오류 :에

invalid operands of types 'int*' and 'unsigned int' to binary 'operator*'|

+0

'INT * arr' ->'INT ** arr'이 변경 사항을 반영하지 않기 때문에. – BLUEPIXY

답변

3

사용 *num 대신 num :

realloc(arr, num * sizeof(int)); 

numint에 대한 포인터의 int pointee의 값은 *num입니다.

그리고 realloc 반환 값을 전송해서는 안됩니다.

http://c-faq.com/malloc/mallocnocast.html