배열 연산자 대신 포인터를 사용하여 2 차원 배열을 참조하는 코드를 다시 작성해야합니다. 나는이를 다시 것입니다 방법 :포인터를 사용하여 C 코드 다시 작성
...
else
array[i][j] = 'x';
...
그래서, 나는 그 인덱스에 'X'로 배열을 설정하는거야. 포인터로 어떻게하면 좋을까요?
배열 연산자 대신 포인터를 사용하여 2 차원 배열을 참조하는 코드를 다시 작성해야합니다. 나는이를 다시 것입니다 방법 :포인터를 사용하여 C 코드 다시 작성
...
else
array[i][j] = 'x';
...
그래서, 나는 그 인덱스에 'X'로 배열을 설정하는거야. 포인터로 어떻게하면 좋을까요?
이 array
가정하면 다음
*(*(array + i) + j) = 'x';
char array[x][y]
입니다, 그것은 추한 것이고 나는 그렇게하지 않을 것입니다. 그러나 효과가있을 것입니다.
*(array + i)
인덱스 i
또 다른 char[]
반환합니다. 따라서 j
을 사용하여 다시 오프셋합니다. 이를 몇 줄에 나누어 스캔 할 수 있습니다.
작업 a[i]
은 *(a + i)
으로 정의됩니다 (즉, 포인터와 오프셋을 역 참조하는 중입니다).
더 높은 차원의 배열로 일반화 할 수 있어야합니다 (힌트 : a
을 비슷한 표현식으로 바꿀 것임).
유용한 숙제는 덜 있지만 그 정도는 아닙니다. array
이 char[n][m]
, 당신은 char *p=array
이
경우,이 솔루션은 p[m*i+j]='x';
,하지만 당신은 배열에 포인터를 사용하는 것이 좋습니다 :
char (*p2d)[m]=array;
p2d[i][j]='x';
'array'는 실제 2D 배열이거나 문자 배열에 대한 포인터 배열에 대한 포인터입니까? –
@CarlNorum, 실제 2D 문자 배열입니다. – aclark