EASY7

[C언어 18강] 포인터란? 본문

개발 공부/C

[C언어 18강] 포인터란?

E.asiest 2016. 7. 9. 01:44

 

 

C만의 특징 포인터를 드디어 배웁니다.

포인터는 왜 사용하는 것일까?

 

포인터를 이용하면 직접 메모리에 접근이 가능해지고 원하는 곳에 접근하여 조작이 가능하다.

 

 

 

 

그래서 포인터는 CPU에서 메모리에 데이터를 저장할 때

어느 주소에 둬야할지를 결정하는 것이다.

메모리의 주소값을 저장하기 위한 변수

 

* : 간접 연산자

*p : 포인터 변수 p

 p : 일반 변수 p

 

선언 : 자료형 *변수명;  또는 자료형* 변수명;

 

12번지에 들어가는 값은 누군가의 주소가 된다.

 

 

하지만 printf("%d",*p_2);하면 4가 출력되는 것이 아니다.

포인터이기 때문에 4번지가 가리키는 값이 뭐니? 라는 뜻이다.

printf("%d",p_2);하면 4가 출력되나?

주석 달 때 여러줄 한줄 차이 있던데 왜 그냥 /*로 쓰는 거지? 한줄은 //

 

 

#include<stdio.h>

void main()

{

int i=10; j=20;

int *p; p=&i; or int *p=&i; i의 주소값을 p가 저장하고 *p는 포인터이다.  

p*값은 그주소가 가리키는 내용 가리키도록 하자 뒤에서 부터 해석함.

printf("i의 주소값 %d p의 값 %d \n", &i, p);/*포인터는 주소값을 가지기 때문에 &하지않음*/

printf("포인터 p의 결과 %d\n", *p ); p값 번지가 가리키는 내용

}

 

i의 주소값 27894 p의 값 27894

포인터 p의 결과 10

나옴.

 

포인터 변수에 *가 붙어있지 않은 경우는 포인터가 저장하는 주소값을 의미

포인터 변수에 *가 붙어있는 경우 주소값에 해당하는 메모리의 내용을 의미

 

#include<stdio.h>

void main()

{

int a=5, b=10;

int *p_1;

p_1=&a;

printf("a의 주소 %d\n", &a); 28891

printf("p_1의 포인터 결과 %d\n", *p_1); 5

printf("p_1의 주소 내용 %d\n", p_1);  28891

printf("p_1의 계산 %d\n", *p_1+b); 15

}

*가 +보다 먼저이다.

 

 

총체적 난국!

 

 

 

Comments