I 함수에서 다음 코드가있는 경우 :액세스
int A[5][5];
int i; int j;
for(i=0;i<5;i++){
for(j=0;j<5;j++){
A[i][j]=i+j;
printf("%d\n", A[i][j]);
}
}
이것은 단순히 각 인덱스의 합을 출력한다. 내가 알고 싶은 것은 동적 배열과 비슷한 방식으로 정적 배열의 각 인덱스에 액세스 할 수 있는지 여부입니다. 그래서 예를 들어, 나는 액세스하기를 원한다면 A [2] [2], 내가 말할 수 있습니다
*(A+(2*5+2)*sizeof(int))?
내가 정적으로 할당 행렬에 약간의 행렬 연산을 수행 할 내가 역 참조 동적 행렬에 사용되는 방법 같은 느낌 제 목적을 위해 최선을 다할 것입니다. 어떤 아이디어? 고맙습니다.
귀하가 주장하는대로 그 배열은 정적이지 않습니다. –
참조 해제 될 포인터가 int에 대한 포인터 인 경우 sizeof()에 의한 곱셈은 필요하지 않습니다. 포인터가 가리키는 유형의 크기만큼 포인터를 계산합니다. – dmckee
@dmckee 불필요 할뿐만 아니라 잘못되었습니다. 첫째, 그가 기대하는 바를하지 않을 것입니다. 둘째, 배열의 경계를 넘어 가서 정의되지 않은 동작을 할 수 있습니다. –