EASY7
[C언어 18강] 포인터란? 본문
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
}
*가 +보다 먼저이다.
총체적 난국!
'개발 공부 > C' 카테고리의 다른 글
[C언어 20강] 포인터식 / 배열 (0) | 2016.07.12 |
---|---|
[C언어 19강] 이중포인터 (0) | 2016.07.10 |
[C언어 17강] 두 문자열을 비교하는 strcmp() (0) | 2016.07.09 |
[C언어 16강] gets()와 scanf() 문자열 입력받기 (0) | 2016.07.08 |
[C언어 15강] 문자열은 배열이다 , strlen (0) | 2016.07.08 |