본문 바로가기
C언어/C언어 문법

C언어 - 포인터/ 포인터 간단한 예제로 공부

by 공부가싫다가도좋아 2021. 3. 10.
반응형

C언어 포인터


포인터:

1. 포인터 변수는 * 을 사용하여 선언

2. 포인터에는 주소값을 저장.

3. 포인터 변수는 소문자로 시작하고 그 다음부터 대문자로 씀.

(변수를 봤을때, 이건 포인터 변수구나 라는 것을 사람들이 바로 알 수 있게. )

 

아래 코드를 보면 이해하기 쉬울 겁니다.

예제1.

#include<stdio.h>

int main(void){
	int a=10;  //변수 a가 double이면 포인터도 더블 ,인트면 포인터도 인트  
	int *pA=NULL;   //포인터를 쓰기 위해서는 포인터를 꼭 초기화 해줘야됨.
	//포인터 이름은 소문자로 시작하고 그 다음 알파벳 부터 대문자로 써야됨. 
	
	pA=&a; //주소값a를 pA에 넣음  
	*pA=20; //*pA 즉 주소값이 a와 똑같은 포인터에 20 을 넣음
    //주소값이 a와 같으므로 a에20을 넣은 것과 같음
	
	printf("%d",a);
	
	return 0;
} 

#결과:

20

 

예제2.

a=100,b=200

포인터로 a=200,b=100으로 바꾸기

#include<stdio.h>

void swap(int *x,int *y){ //*x를 사용함으로 인해 주소값을 받아올 수 있음.
int tmp;
tmp=*x;
*x=*y;
*y=tmp;
}

int main(void){
int a=100,b=200;
printf("%d %d\n",a,b); //a=100,b=200

swap(&a,&b); //포인터로 바꾸므로 주소값을 넣어줘야됨.  
printf("%d %d\n",a,b); //a=200,b=100
}

#결과:

a=200,b=100

 

예제3.

포인터 배열

#include<stdio.h>

int main(void){
	int a=10, b=20,c=30;
	
	int *pABC[3]={&a,&b,&c};
	
	printf("%d\n",pABC[0]); //pABC 배열의 0인덱스위치에 있는 변수 주소값을 가져옴  
	printf("%d\n",pABC[1]);
	printf("%d\n",pABC[2]); 
	
	printf("%d\n",*pABC[0]); //pABC 배열의 0인덱스위치에 있는 변수를 가져옴  
	printf("%d\n",*pABC[1]);
	printf("%d\n",*pABC[2]); 
} 

#결과:

위 세개는 컴퓨터 메모리 주소값이므로, 컴퓨터마다 다른 값이 나올 수 있습니다.

 

예제4.

문자열 변경, 포인터 사용.

#include<stdio.h>
#include<string.h>

int main(void){
	int i;
	char str[]="hello";
	strcpy(str,"hey\n");//문자열 변경시  strcpy써야됨  
	//str배열의 hello를 hey 로 바꿈  
	printf("%s",str);
	
	char *p="hi~~";
	p="bye"; //포인터 문자 변경시 그냥 바로 변경하면 됨. 
	 //메모리에 직접 접근해서 변경하기 때문에 strcpy()함수를 안써도 됨.
	printf("%s\n",p);
	return 0;
} 

#결과:

hey

bye

반응형

댓글