2012-02-03 4 views
2

배열 연산자 대신 포인터를 사용하여 2 차원 배열을 참조하는 코드를 다시 작성해야합니다. 나는이를 다시 것입니다 방법 :포인터를 사용하여 C 코드 다시 작성

... 
else 
    array[i][j] = 'x'; 
... 

그래서, 나는 그 인덱스에 'X'로 배열을 설정하는거야. 포인터로 어떻게하면 좋을까요?

+0

'array'는 실제 2D 배열이거나 문자 배열에 대한 포인터 배열에 대한 포인터입니까? –

+0

@CarlNorum, 실제 2D 문자 배열입니다. – aclark

답변

1

array 가정하면 다음

내 말은
*(*(array + i) + j) = 'x'; 

char array[x][y]입니다, 그것은 추한 것이고 나는 그렇게하지 않을 것입니다. 그러나 효과가있을 것입니다.

*(array + i) 

인덱스 i 또 다른 char[] 반환합니다. 따라서 j을 사용하여 다시 오프셋합니다. 이를 몇 줄에 나누어 스캔 할 수 있습니다.

1

작업 a[i]*(a + i)으로 정의됩니다 (즉, 포인터와 오프셋을 역 참조하는 중입니다).

더 높은 차원의 배열로 일반화 할 수 있어야합니다 (힌트 : a을 비슷한 표현식으로 바꿀 것임).

유용한 숙제는 덜 있지만 그 정도는 아닙니다. arraychar[n][m], 당신은 char *p=array

0

경우,이 솔루션은 p[m*i+j]='x';,하지만 당신은 배열에 포인터를 사용하는 것이 좋습니다 :

char (*p2d)[m]=array; 
p2d[i][j]='x'; 
관련 문제