06주차 - Donghwanteam/C2-10 GitHub Wiki
포인터의 정의
포인터(Pointer) 는 메모리 주소를 저장하는 변수이다. 즉, 일반 변수는 값을 저장하는 반면, 포인터는 **어떤 값이 저장된 메모리의 위치(주소)**를 저장한다.
#include <stdio.h>
int main() {
int num = 5;
int *ptr = #
printf("num의 값: %d\n", num);
printf("ptr이 가리키는 값: %d\n", *ptr); // 역참조
printf("ptr 자체의 값 (num의 주소): %p\n", ptr);
return 0;
}
포인터: 메모리 주소를 저장하는 변수
일반 변수 -> 값 저장
포인터 -> 값이 저장된 주소 저장
주소->변수 (*) 변수->주소 (&)
int n = 10; // 일반 변수
int *k = &n; // 포인터 변수, 변수 a의 주소를 저장
printf("%d %d\n", n, *k);
- *p는 "p가 가리키는 곳의 값"을 의미
- &a는 "a의 주소"를 의미
포인터 선언
int *p; // int형 데이터를 가리키는 포인터
char *cp; // char형 데이터를 가리키는 포인터
float *fp; // float형 데이터를 가리키는 포인터
주소 연산자 &
int a = 5;
int *p = &a; // a의 주소를 p에 저장
간접 참조 연산자( * )
*p = 20; // p가 가리키는 주소에 있는 값을 20으로 설정
포인터를 가리키는 포인터도 가능합니다.
int n = 10;
int *p = &a;
int **pp = &p;
printf("%d\n", **pp); // 10 출력
#include <stdio.h>
int main() {
int n = 10;
printf("data : %d\n", n);
}
#include <stdio.h>
int Increment(int k)
{
return 11;
}
int main() {
int n = 10;
printf("data : %d\n", n);
n = Increment(n); //++n;
printf("data : %d\n", n);
}
#include <stdio.h>
int Increment(int k)
{
return k+1;
}
int main() {
int n = 10;
printf("data : %d\n", n);
n = Increment(n); //++n;
printf("data : %d\n", n);
n = Increment(n); //++n;
printf("data : %d\n", n);
n = Increment(n); //++n;
printf("data : %d\n", n);
}
#include <stdio.h>
void PrintA() {
printf("PrintA()\n");
}
void PrintB() {
printf("PrintB()\n");
}
void PrintC() {
printf("PrintC()\n");
}
int main() {
PrintA();
PrintC();
PrintB();
}
#include <stdio.h>
void PrintA() {
printf("PrintA()\n");
}
void PrintB() {
PrintA();
printf("PrintB()\n");
}
void PrintC() {
PrintB();
printf("PrintC()\n");
}
int main() {
PrintA();
PrintB();
PrintC();
}
#include <stdio.h>
int main() {
int n = 10;
int k = n;
n = 100;
printf("%d %d\n", n, k);
//return 0;
}
#include <stdio.h>
int main() {
int n = 10;
int* k = &n;
n = 100;
printf("%d %d\n", n, *k);
printf("%d %d\n", &n, k);
//return 0;
}
#include <stdio.h>
int main() {
char c = 10;
double d = 5.6;
char* p1 = &c;
double* p2 = &d;
printf("%d %g\n", c, d);
printf("%p %p\n", p1, p2);
printf("%p %p\n", &c, &d);
}
#include <stdio.h>
int main() {
char c = 10;
double d = 5.6;
char* p1 = &c;
double* p2 = &d;
printf("%d %g\n", c, d);
printf("%d %g\n", *p1, *p2);
printf("%d %g\n", *&c, *&d);
}
#include <stdio.h>
int main() {
int n = 10;
int* p = &n;
int** pp = &p;
printf("%d %d %d\n", n, *p,**pp);
printf("%p %p %p\n", &n,&*p, &**pp);
printf("%p %p %p\n", &n, p, *pp);
}
#include <stdio.h>
int main() {
double d;
double d2 = 7.77;
double* pd;
double** ppd;
d = 5.55;
pd = &d2;
ppd = &pd;
printf("%g %g %g\n", d, *pd, **ppd);
}
#include <stdio.h>
int main() {
int n = 10;
int n2 = n;
int* p = &n;
int* p2 = p;
printf("%d %d\n", n, *p);
printf("%p %p\n", &n, &*p);
printf("%p %p\n", &n, p);
}
#include <stdio.h>
int main() {
int n = 10;
int n2 = n;
int* p = &n;
int* p2 = p;
*p2 = 20;
printf("%d %d %d\n", n, *p, *p2);
}