2017-11-16 3 views
0

컴파일하지 않는 코드가 있는데, 그것을 고치기 위해 머리를 부숴 먹었습니다. 저는 초보 프로그래머 일 뿐이며, 근본 원인을 가지고있는 것처럼 느낍니다.하지만 어떤 이유로 세미콜론과 물건을 넣는 것을 잊어 버린 것 같은 오류가 발생합니다. 이유 또는 장소가 확실하지 않으므로 누군가 내 작업을 교정하려고한다면 크게 감사하겠습니다.배열과 C 구문

주 프로그램의 각 문 끝 부분에 오류가 발생하는 것으로 나타나고 오류 코드는 세미콜론을 잊어 버리고 있음을 나타내지 만 오류가 있다는 것을 이해할 수 있도록 오류가 있음을 나타냅니다.

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

    void printArrayValues(int array[], int num); 


    void fillWithIndex(int array[], int num); 


    int main(int argc, char * argv[]) 
    { 
     int arr1[] = { 23, 21, 20, 27 }; 
     int arr2[] = { 5, 7, 9, 11, 13 }; 

      // Print the values in the first array, fill that array with 
      // its indexes, and then print the values of the array 
      // again. 

      printArrayValues(arr1[], 4); 
      fillWithIndex(arr1[], 4); 
      printArrayValues(arr1[], 4); 

      // Do similarly for the second array. 

      printArrayValues(arr2[], 5); 
      fillWithIndex(arr2[], 5); 
      printArrayValues(arr2[], 5); 

      return 0; 
    } 


    void printArrayValues(int array[], int num) 

    { 
     int i = 0; 

     while (i < num) 
     { 
      printf("%d\n", array[i]); 
      i++; 
     } 

     return; 
    } 


    void fillWithIndex(int array[], int num) 
    { 
     int i = 0; 

     while (i < num) 
     { 
      array[i] = i; 
      i++; 
     } 

     return; 
    } 
+1

컴파일 할 때 발생하는 오류는 무엇입니까? 선언되지 않은 식별자 을하고 우리 학교의 웹 기반 컴파일러는 예기치 않은 문자 말한다 :; ''; – Aziz

+0

Visual Studio에서 오류 C2605을 제공 오류가 컴파일 할 때 발생하고, 내가 생각하는 주요 – aethros

+2

에서 첫 번째 문에서 시작 인식 할 수없는 C 구문을 복사하여 붙여 넣기의 결과로이 컴파일러 오류를 일으키는 일부 숨겨진 문자가 있습니다. 이 오류의 원인이되는 행을 다시 입력하면 컴파일해야합니다. – Aziz

답변

5

1. main()에서 함수를 호출하는 동안 배열에 []을 사용하지 마십시오. 2.As 당신이 다음 사용 명령 줄에서 값을받지에만 INT 주()

int main() 
    { 
     int arr1[] = { 23, 21, 20, 27 }; 
     int arr2[] = { 5, 7, 9, 11, 13 }; 

      // Print the values in the first array, fill that array with 
      // its indexes, and then print the values of the array 
      // again. 

      printArrayValues(arr1, 4); 
      fillWithIndex(arr1, 4); 
      printArrayValues(arr1, 4); 

      // Do similarly for the second array. 

      printArrayValues(arr2, 5); 
      fillWithIndex(arr2, 5); 
      printArrayValues(arr2, 5); 

      return 0; 
    } 
+0

답변을 수정했습니다. 확인 해봐. –

+0

확실히 도움이되었는데, 다른 오류가 어떻게 든 숨겨진 인물이었던 것처럼 보입니다. 정보 주셔서 감사합니다! – aethros

+0

'int main()'을 사용해야하는 이유는 무엇입니까? 적절한 서명은'int main (void)'이다. 빈 매개 변수 목록은 K & R입니다. – Gerhardh

3

배열은 첫 번째 요소에 포인터 붕괴. 두 함수의 첫 번째 인수는 int * 형식의 인수를 필요로합니다. 함수 호출에서 이와 같은 첫 번째 인수를 전달해야합니다.

printArrayValues(arr1, 4); 
fillWithIndex(arr1, 4); 
printArrayValues(arr1, 4); 

// Do similarly for the second array. 

printArrayValues(arr2, 5); 
fillWithIndex(arr2, 5); 
printArrayValues(arr2, 5); 

함수 호출에서 첨자 연산자는 필요하지 않습니다. 빈 첨자 연산자는 함수 선언/정의에서 매개 변수로 사용되거나 이니셜 라이저 목록으로 선언 될 때만 유효합니다.

관련 문제