포인터
포인터란 가리키는 자를 뜻하는 의미로서 변수의 주소 값(address)를 저장하는 변수를 의미합니다. 즉, 메모리 공간에서 변수가 존재하는 위치인 주소 값을 저장하는 변수가 포인터인 것입니다. C 언어에서 포인터는 주소 값을 포인터에 저장함으로써 변수를 가리키는 행위를 합니다. 기본적인 문법 구조는 다음과 같습니다.
포인터 선언 형식 | 참조자료형* 포인터이름; |
ex) 포인터
# include <stdio.h>
int main(void){
int a=1;
int* pa;
pa=&a;
printf("%d\n",a); //변수 a의 값
printf("%d\n",pa); //변수 a의 주소값 (adress)
*pa=2; // *포인터=변수
printf("%d",*pa);
printf("%d",a);
}
※ result
1
6487572
2
2
포인터로 사용할 자료를 참조자료형에 *을 붙이면 포인터가 가리키는 대상 변수의 자료형이 됩니다. 변수 a의 주소 값을 활용하고 싶다면 &을 변수 앞에 붙여 &a로 활용을 하면 됩니다. 그리고 변수 pa에 * 연산자를 붙이면 이는 변수 a 그 자체가 됩니다. 즉 다시말해서 *pa가 변수 a와 같게 되는 것입니다.
변수 | 1. 자료형 변수이름; 2. 변수에 값을 할당 |
포인터 | 1. 참조자료형* 포인터이름; 2. 변수에 주소를 할당 3. *포인터이름=변수 |
■ 동적 메모리 할당과 해제
지금가지 변수를 사용하기 위해서는 메모리 공간의 일부를 할당받는 것을 알 수 있었습니다. 하지만 변수를 선언하지 않고도 프로그램 실행 시 필요에 따라 메모리를 할당받아 사용하고 해제할 수 있는데 이것을 동적 메모리 할당과 해제라고 합니다. 프로그램 필요시에 따라 메모리를 할당받는 방법은 메모리를 절약할 수 있는 방법입니다.
동적 메모리 할당은 메모리 공간 할당을 위한 malloc() 함수를 사용을 할 수 있습니다. 동적 메모리 해제는 malloc() 함수를 사용해 할당한 공간을 다시 해제하는 것으로 free() 함수를 사용하고 할당 해제 모두 <stdlib.h> 나 <malloc.h>를 통해서 헤더 파일을 포함할 수 있습니다.
동적 메모리 할당과 해제 |
void *malloc (size_t size); void free(void *p); |
ex) 두 값 교환하기
두 값을 할당받아서 함수 원형 선언을 한 후 포인터를 이용해 두 값을 바꾸도록 하라.
# include <stdio.h>
int swap(int* x, int* y){
int block;
block=*x;
*x=*y;
*y=block;
}
int main(void){
int a,b;
printf("두 값 입력 : ");
scanf("%d%d",&a,&b);
printf("x=%d , y=%d\n",a,b);
swap(&a,&b);
printf("exchange\n");
printf("x=%d , y=%d",a,b);
}
※ result
두 값 입력 : 2 3
x=2 , y=3
exchange
x=3 , y=2
※ sizeof() 사용하기
# include <stdio.h>
int main(void){
int a[3]={1,2,3};
int b,c;
b=sizeof(a);
c=sizeof(a[0]);
printf("%d\n",b); // 4byte int가 3개 이므로 12 출 력
printf("%d",(b/c)); // (4byte * 3 ) / (4byte * 1) = 3
}
※ result
12
3
sizeof(A)는 A배열의 전체 byte의 수를 구하는 기능입니다. 따라서 전체 byte에 배열 원소 하나에 대한 byte의 수를 나누어주면 배열의 개수를 구할 수 있습니다.
'컴퓨터 프로그래밍 > c 언어 (c programming language)' 카테고리의 다른 글
C 언어 - random (0) | 2020.09.27 |
---|---|
C 언어 - 구조체(Structure) (0) | 2020.09.27 |
C 언어 - 배열(Arrangement) (0) | 2020.09.27 |
C 언어 - 함수 (0) | 2020.09.27 |
C 언어 - 반복문(Loop) (0) | 2020.09.26 |
댓글