2차원 배열에서 &a[5]와 a[5]의 차이

2019. 8. 12. 19:44PL/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