일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- HTML
- 자바스크립트
- c#
- 그누보드
- cocos2d-x
- Javascript
- vps
- 자동블로그
- Ajax
- 파싱
- Python
- php
- vultr
- 웹
- 워드프레스
- 아두이노 강좌
- 가상서버
- 자동포스팅
- 무료일러스트
- 파이썬
- 쿠팡파트너스
- 프로그램
- flex
- 자동글쓰기
- 챗지피티
- Php공부
- 아두이노 기초강좌
- 아두이노
- 아두이노 초보
- ChatGPT
- Today
- Total
플밍
배열과 포인터 테스트 본문
포인터와 배열의 개념을 확실히 잡기 위해 아래와 같은 실험을 해보았다.
#ads_1
#include <iostream>
#include <conio.h>
using namespace std;
class XY{
public:
int nX, nY;
};
int main(){
XY xy[10];
XY *ptr;
ptr = xy;
//1번
ptr->nX = 1;
ptr->nY = 2;
//2번
(*(ptr+1)).nX = 3;
(*(ptr+1)).nY = 4;
//3번
ptr[2].nX = 5;
ptr[2].nY = 6;
//4번
(*(ptr+3)).nX = 7;
(*(ptr+3)).nY = 8;
cout << ptr[0].nX << ", " << ptr[0].nY << endl;
cout << ptr[1].nX << ", " << ptr[1].nY << endl;
cout << ptr[2].nX << ", " << ptr[2].nY << endl;
cout << ptr[3].nX << ", " << ptr[3].nY << endl;
//5번
xy[4].nX = 7;
xy[4].nY = 8;
//6번
(&xy[5])->nX = 9;
(&xy[5])->nY = 10;
//7번
(&xy[0]+6)->nX = 11;
(&xy[0]+6)->nY = 12;
//8번 : 배열이름 xy는 &xy[0] 으로 자동 변환된다
(xy + 7)->nX = 13;
(xy + 7)->nY = 14;
cout << xy[3].nX << ", " << xy[3].nY << endl;
cout << xy[4].nX << ", " << xy[4].nY << endl;
cout << xy[5].nX << ", " << xy[5].nY << endl;
cout << xy[6].nX << ", " << xy[6].nY << endl;
cout << xy[7].nX << ", " << xy[7].nY << endl;
getch();
return 0;
}
실행결과 :
1, 2
3, 4
5, 6
7, 8
9, 10
11, 12
13, 14
<결론>
포인터를 배열형태로 사용할때는 컴파일시 포인터형태로 변환되어 해석되고
배열의 이름은 &배열이름[0] 형태로 변환되어 해석된다
※ 참고
함수의 파라미터에서 배열은 아래와 같이 변환된다
변환 전
void f(char a[])
{ ... }
변환 후
void f(char *a) { ... }
#ads_1