포인터: 주소값을 저장하는 변수. 포인터 자체도 하나의 변수 종류다! (포인터변수)
포인터 선언
int *ptr;
방법1: 변수 주소 대입
int val = 10;
int *ptr;
ptr = &val;
방법2: malloc이용. 동적 메모리 할당. 꼭 free 해주어야 한다!
char *ptr = (char*)malloc(100); // char형 공간 100개의 시작주소를 ptr에 지정
*ptr = 'a'; //ptr이 만들어진 빈 공간에 a 넣음.
int age = 20;
int *agePtr = malloc(sizeof(age)); //age의 크기만큼 할당. agePtr이 가리키는 공간 안에는 쓰레기값이 저장되어있다.
free(ptr);
free (agePtr); //malloc이용한 할당은 꼭 free해주어야 한다!
방법3: 문자형 포인터. 문자열의 시작 주소 저장
char *ptr = "POINTER"; //문자열은 그냥 지정만 해주어도 된다
printf("%s", ptr+2); //INTER 출력
포인터 연산
* : 포인터가 가리키는 변수의 내용. 포인터변수에 붙여준다.
&: 변수의 주소. 일반 변수에 붙여준다.
ex)
int a = 50; // a의 메모리주소는 100이라고 가정.
int *ptr = &a; // ptr에 a의 주소를 저장한다.
printf("%d\n", ptr); //ptr은 100
printf("%d\n", *ptr); //ptr이 가리키는 주소(100번지)의 내용은 50
포인터와 문자열
getchar(), putchar()
getchar() : 문자를 '한 글자만' 입력받는 함수. scanf와 비슷.
putchar(): 문자를 '한 글자만' 출력하는 함수. printf와 비슷.
간단하게 입력버퍼를 비워줄 때 getchar()를 사용한다.
포인터 배열
포인터 배열: 여러 개의 포인터를 하나의 배열로 구성한 것. 배열+포인터의 특징을 모두 이용 가능
char *ptr[20];
char 배열의 마지막에는 '\0'(널문자)가 저장되는 것 주의!
포인터 배열을 이용하여 문자열을 저장하면, 저장하는 문자열의 길이에 따라 메모리가 할당된다. → 메모리 효율적!
포인터의 포인터
포인터의 포인터: 포인터를 가리키고 있는 포인터
int **ptr;
'Study > C,C++' 카테고리의 다른 글
[오류] 클래스 템플릿 "std::array"에 대한 인수가 너무 적습니다 (0) | 2019.06.26 |
---|---|
7. 구조체 (0) | 2018.07.22 |
3.1 연산자 (0) | 2018.07.19 |
2.3 진법 , 기본형 (0) | 2018.07.19 |
2,1 변수와 자료형 (0) | 2018.07.16 |