1. 포인터 변수
선언 방식
char *p;
char*p;
char * p;
char* p;
곱셈 연산자와의 구분
*는 선언문에 사용됨*이 오면 곱셈 연산자 Xchar* p 선언 이후 -> p는 포인터(주소), *p는 char포인터 매개 변수
const char* format = "Hello, World!\n";
*format = 'H'2. 주소 연산자
변수의 주소를 나타내는 연산자: &
&(and)와 같은 형태배열 이름, 함수 이름은 이미 주소를 나타냄
int a[10]; // a -> &a
printf() // printf -> &printf
1. 구조체 포인터
구조체는 일반적으로 call by reference 방식을 사용
struct mytime time{
// initialize
};
time // -> call by value / time 구조체 전체를 복사
&time // -> call by reference / time 변수의 주소 전달
구조체의 포인터 멤버 접근
(*timeptr).tm_year
(*timeptr).tm_mon
(*timeptr).tm_mday
// 괄호를 피하기 위한 표현 문법
timeptr -> tm_year
timeptr -> tm_mon
timeptr -> tm_mday
구조체 복사를 피하기 위한 call by reference
(*timeptr).tm_year=0; // 오류
timeptr -> tm_year=0; // 여기도 오류!
const 사용2. malloc 과 free 함수의 원형
원형: void* malloc(size_t size)
원형: void free(void* ptr)
void* 포인터
int*p1 = malloc(4*3); // int p1[3];
int(*p2)[3] = malloc(4*2*3); // int p2[2][3];
int(*p3)[3][4] = malloc(4*2*3*4); // int p3[2][3][4];
free(p1);
free(p2);
free(p3);