#include <cs50.h> #include <stdio.h> int example[]; int main(void) { int example = {1,2,3}; for (int i = 0; i < 3; i++) { printf("%i \n", example[i]); } } 

“2”에 “Excess elemnts in scalar initializer”라는 오류 메시지가 표시되는 이유 내가 정의하고있는 배열에서, 배열의 I 번째 정수를 출력하려고 할 때 “[i]”에 “Subcripted 값이 배열, 점 또는 벡터가 아닙니다”라는 오류 메시지가 나타납니다.

감사합니다.

댓글

  • 초기화에 실수가 있습니다. int example = [1,2,3]; not {} 🙂
  • @AhmedEl nope ..
  • @JakobH, C에서 배열의 크기는 고정되어 있습니다. 배열의 크기가 결정되면 변경할 수 없습니다. 이제 크기는 얼마입니까? example를 정의 했습니까? example에 몇 개의 요소를 푸시하려고합니까?
  • 죄송합니다. ' 메인 앞 줄이 보이지 않습니다 …

답변

배열의 크기를 설정해야합니다.

IE :

int example[10]; 

그런 다음 이렇게 설정하여 배열의 첫 번째 요소를 1 :

example[0] = 1; 

하지만 이렇게 할 수는 없습니다.

int example[10]; example = {1, 2, 3}; 

이미 배열을 정의한 경우 컴파일러는 정의 (또는 변경)하려는 배열의 요소 (IE : [0])를 정의하고 해당 요소에 할당 할 항목 ( IE : 1).

크기를 자동으로 설정하려면 다음을 삭제할 수 있습니다.

int example[]; 

다음을 작성합니다.

int example[] = {1, 2, 3}; 

그러면 컴파일러는 사용자가 배열을 정의하고 3 요소의 값을 1, 2 및 3으로 설정하고 있음을 알고 있습니다.

코드는 다음과 같이 표시됩니다.

#include <cs50.h> #include <stdio.h> int main(void) { int example[] = {1,2,3}; for (int i = 0; i < sizeof(example) / 4; i++) { printf("%d\n", example[i]); } } 

도움이되기를 바랍니다. 🙂

답변

수행함으로써

int example[]; 

크기가 정의되지 않은 배열에 대한 포인터를 초기화하고 있습니다. 그 후

int example = {1,2,3}; 

yu는 비논리적이며 의미가없는 포인터에 값을 추가하고 있습니다.

int example[3]; int example = {1,2,3}; 

도움이되기를 바랍니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다