모든 변수는 주소를 가진다.
포인터(pointer) : 메모리 주소를 값으로 가지는 변수
int *ptr;
& : 주소 추출
int c = 10;
int *p;
p = &c;
//변수 c가 저장되어있는 메모리주소를 p에 넣음
int x = 1;
int y = 1;
int *ip;
ip = &x; //x의 주소값1003가 ip에 저장됨.
y = *ip; //ip에 있던 1003의 주소값을 가진 x값, 즉 1이 y에 저장됨.
*ip = 0; //x가 0으로 됨.
1003 |
1 |
x |
1004 |
1 |
y |
1005 |
||
1006 |
1003 |
ip |
1007 |
배열의 이름은 배열의 첫번째 값을 저장하는 포인터
int calculateSum(int *array)
int함수에서 배열을 매개변수로 넘겨줄 때, 포인터 사용 가능
array[1] == *(array+1)
array[i] == *(array+i)
c언어에서 char형은 1byte
동적메모리할당 -> malloc함수
#include <stdlib.h>
int *p;
p = (int *)malloc(40); //40바이트
if(p == NULL){
//동적메모리 할당 실패
}
p[0] = 1; //정수형 배열처럼 쓸 수 있음
int * array = (int *)malloc(4*sizeof(int)); //4개 배열
array[0] = 1;
array[1] = 2;
array[2] = 3;
array[3] = 4;
int * tmp = (int *)malloc(8*sizeof(int)); //8개 배열
int i;
for(i=0; i<4; i++)
tmp[i] = array[i];
array = tmp;
//array의 크기 부족 상황 해결
array[4] = 5; //가능
'programming > C' 카테고리의 다른 글
[C언어] 자료구조 - 개념 정리 (0) | 2020.11.02 |
---|---|
[C언어] 자료구조 - 문자열예제(글자수 공백포함해서 세는 프로그램) (0) | 2020.08.08 |
[C언어] 자료구조 - 문자열, 파일 읽어오기 (0) | 2020.08.08 |
[C언어] 두 배열의 합집합, 교집합, 차집합 구하는 함수 (0) | 2019.10.18 |
[C언어] 포인터 사용하여 배열 이어붙이기,정렬확인,비교 (0) | 2019.10.15 |
댓글