2차원 배열에서 &a[5]와 a[5]의 차이
2019. 8. 12. 19:44ㆍPL/C++
#include <stdio.h>
char board[10][10];
int main(void) {
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
board[i][j] = i * 10 + j;
}
}
*(board[5] + 3) = 0;
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
printf("%3d", board[i][j]);
}
printf("\n");
}
return 0;
}
다음과 같은 코드가 있다고 하자. 제목에 있는 것을 위의 변수 이름으로 치환하면 &board[5]와 board[5]는 같은가의 질문으로 바뀌게 된다. 결론은 값은 같지만 연산을 하는데 있어서는 상당한 차이를 보인다
위와 같이 board[5] = &board[5][0]과 같은 값으로 +3 연산을 하면, board[5][3]의 주소를 가리키게 된다. 하지만 &board[5]에 +3 연산을 하면 &board[8]과 같아지게 된다
'PL > C++' 카테고리의 다른 글
C++ Boost.Asio 설치 (0) | 2019.08.12 |
---|---|
static 정적 멤버와 상수 멤버 (0) | 2019.08.12 |
friend 클래스 (0) | 2019.08.12 |
상속에서의 생성자와 소멸자 (0) | 2019.08.12 |
C++ 클래스 변수 초기화와 this 포인터 (0) | 2019.08.12 |