2014-04-06 2 views
1

)이 for 루프 내에서 라인 *(repetitions + x)++;에 대해이 오류가 발생합니다. 어떤 단서를 왜?증분 피연산자로 왼쪽 값이 필요합니다. (

for (int y = 0; y<hours; y++) 
{ 
    if (*(array + x) == *(array + y)) 
    { 
     *(repetitions + x)++; 
    } 
}  
+0

귀하의 코드는'* ((반복 + X) ++) '에 해당 같이 표현 될 수 (*(repetitions + x))++;을 작성하는 의미 가능성이 있습니다. –

+0

내가 따라갈 수 없습니까? – user3502479

+0

아, 이제 알았어요. 고마워요! – user3502479

답변

1

당신은를 rvalue repetitions + x를 증가 할 수 없습니다

++*(repetitions + x); 

나 : 또 다른 선행 증가를 사용합니다. 이 기록과 같은 에러이다

int a = 3; 
int b = 2; 
(a+b)++;  // ???? 

++ 연산자 좌변, 즉 변수의 지정을 필요로한다. a+b은 일시적인 결과이며 메모리 주소가 없으므로 증가 할 수 없습니다.

그것은 당신이 더 명확하게 repetitions[x]++;

-1

*((repetitions + x)++)로 구문 분석 - 즉, 그 다음 역 참조, 일정한 주소를 수정하려고합니다. 아마도 주소에서 가리킨 부분을 의도적으로 증가 시키려고했을 것입니다.

두 가지 방법으로 할 수 있습니다. 하나는 괄호를 사용하는 것입니다.

(*(repetitions + x))++; 
+0

또는'+'와'*'대신에 괄호를 사용하십시오 :'repetitions [x] ++;' – aschepler

+0

('repetitions'은 포인터 또는 다른 임의 접근 반복자라고 가정합니다) – aschepler

관련 문제