2014-04-17 2 views
0

가변 인덱스가있는 배열을 만드는 코드를 작성하려고합니다 (함수에 정적 배열이 있고 값을 추가 한 다음 루프에서 빠져 나와 다시 돌아 오는 것을 의미 함). 그리고 그것의 끝에 다른 값) 을 추가하지만, 내 코드는 컴파일되지 않습니다 :함수의 배열 인덱스가 증가합니다

#include <iostream> 
#include <conio.h> 
using namespace std; 
void arrarr(int); 
int main() 
{ 
    for (int i = 1; i < 5; i++) 
    { 
     arrarr(i); 
    } 
    _getch(); 
    return 0; 
} 
void arrarr(int y) 
{ 
    static int x[y]; 
    x[y] = 5; 
    cout << x[y]; 
} 
+0

'에 대해 (ⅰ = 1 값 int; 나는 <5; I ++)'C++에서 배열 인덱스 시작 '0'에서'for (int i = 0; i <5; i ++)' –

+0

표준 컨테이너를 사용하고 싶지 않은 이유가 있습니까? – Veritas

+0

표준 컨테이너 ?? 그게 뭔가요? – KiaN

답변

0

C++ 가변 길이 배열을 지원하지 않습니다, 당신은 정적 배열 x에 대한 일정한 크기를 정의 할 필요가있다. 당신은 같은 것을 수행 할 수 있습니다

void arrarr(int y) 
{ 
    static int x[SOME_CONSTANT_SIZE]; //SOME_CONSTANT_SIZE known at compile time 
    x[y] = 5; //y < SOME_CONSTANT_SIZE 
    cout << x[y]; 
} 

을 그리고 @Bruno가 지적한대로 동적 배열의 크기를 증가 찾고 있다면, 배열 인덱스가 (size-1)

0에서 시작, 당신은 할 수 없습니다. 대신 vector을 사용하십시오. 여기를 참조하십시오 : http://www.cplusplus.com/reference/vector/vector/resize/

+0

방금 ​​배열의 종류를 지우고 싶지만 다음 루프에서 데이터를 유지하고 싶습니다. 어떻게 할 수 있습니까? – KiaN

+0

예, 컴파일 타임에 알려진 일정한 크기의 배열을 정의하십시오. 함수 호출을 통해 보존 된 값을 가진 정상 정적 변수처럼 작동합니다. – brokenfoot

+0

아니요 사용자가 다른 번호를 추가하고 싶은 경우처럼 인덱스를 늘리고 싶은 경우 배열을 인쇄하십시오. – KiaN

0

귀하의 코드는이 때문에 컴파일되지 않습니다 : 컴파일러는 x이 무엇인지 모르는

static int x[y]; 

, 예를 들어,

int [0] 
int [1] 
int [2] 

그래서 당신은

void arrarr(int y) { 
    static int x[10]; 
    x[y] = 5; 
    cout << x[y]; 
} 

을하지만, 당신이 작동하지 않습니다하고 있었다 수 있습니다.

예상되는 결과물을 공유하면 더 많은 도움을받을 수 있습니다.

+0

그냥 배열을 지우고 싶지만 다음 루프를 위해 데이터를 보관하고 싶습니다. 어떻게 할 수 있습니까? – KiaN

2

변수는 가변 크기를 가질 수 없습니다. 배열 x의 크기를 명시 적으로 정의해야합니다 (예 : static int x[5]). 또한

, 어레이의 첫 번째 요소를 의미 제로 인덱싱 그래서 루프 상태이어야 0에서 시작 for (int i = 0; i < 5; i++)

관련 문제