본문 바로가기

프로그래밍/C++

약간의기초(포인터)


포인터=주소를 담는 그릇

주소표현 aa[0]의 주소는 &aa[0]로 표시 // 원래 포인터 변수에는 꼭 주소값을 넣는다.
배열이름 aa 자체가 주소를 의미하므로 aa의주소는 단순히 'aa'로 표현.
 배열 첨자로 표현 배열 이름으로 표현   주소 (임의의 주소)
 &aa[0]  aa+0  1031
 &aa[1]  aa+1  1035
 &aa[2]  aa+2  1039
☞주의) 주소값이 4byte씩 증가하는것 잊지 말것.

포인터 변수를 선언하려면 변수형에 *를 붙임
ex) int *변수;, char *변수;

ex)
------------------------------------------------
#include <iostream>
using namespace std;

int main()
{
int a=123;
int *p;
p=&a;
printf("%d\n",p); //a의 주소값이 출력
printf("%d\n",*p);//a의 실제값 123이 출력
}
------------------------------------------------

배열과 포인터.
(예시로 이해하기!)
ex)
------------------------------------------------
#include <iostream>
using namespace std;

int main()
{
char s[8]="reverse";
char *p;        //포인터 변수 선언
p=s;              //p배열에 s의 주소대입☞s는 주소값을 저장한게 아니고 주소값 그
                      자체이므로 s는 포인터 상수 p는 포인터변수
printf("&s[3]==>%s\n",&s[3]);//문자열과 포인터의 주소값을 출력
printf("p+3==>%s\n\n",p+3);//문자열과 포인터의 주소값을 출력
  // ☞s[3]은 'e'를 저장하는 변수 &s[3]은 그변수의 주소값의미.
printf("s[3]==>%c\n",s[3]);//문자와 포인터의 실제값을 출력
printf("*(p+3)==>%c\n",*(p+3));//문자와 포인터의 실제값을 출력
         
}
------------------------------------------------

'프로그래밍 > C++' 카테고리의 다른 글

기초중기초(함수)  (0) 2011.01.04
기초중기초(구조체 struct)  (0) 2011.01.03
기초중기초(배열 array)  (0) 2011.01.03
기초중기초(반복문 for)  (0) 2011.01.03
기초중기초(반복문 while)  (0) 2010.12.27