프로그래밍 기초용어 및 지식
https://codingducks.tistory.com/40
https://codingducks.tistory.com/48
디버깅(기초디버깅/메모리디버깅)
https://codingducks.tistory.com/47
https://codingducks.tistory.com/46
방송에서 사용된 PPT를 이미지 형태로 제공합니다.
저작권이 있는 내용이니 재편집 및 무단배포를 금지해 주시기 바랍니다.
강의용이나 공부용으로 사용하시기를 부탁드립니다.
포인터는 아주 단순합니다. 주소를 저장하기 위한 변수입니다.
이것만 기억하시면 됩니다.
포인터의 크기는 운영체제에 따라 크기가 동일합니다.
이는 운영체제에서 주소하나를 처리하기 위한 크기와 같기 때문인데요.
이를 WORD라고 하기도 합니다.
1워드는 포인터의 크기라고 생각하시면 됩니다.
크기가 모두 같은데 타입이 필요한 이유는 바로 내부적으로 연산에 필요하기 때문입니다.
값을 참조할때나 주소단위의 이동을 할때 타입이 없다면 할 수 없기 때문입니다.
포인터의 연산은
포인터 끼리의 대입연산
포인터 + 정수연산
포인터 - 정수연산
포인터 - 포인터 연산
외에는 의미가 없습니다.
포인터에서 많이 헷갈려하는 것이 다중포인터 입니다.
그냥 주소를 참조하는 단계가 몇개이냐 라고 생각하시면 편합니다.
*이 한개면 참조하는 단계가 1단계
**이 두개면 참조하는 단계가 2단계라고 생각하시면 됩니다.
포인터 배열과 배열포인터는 다른것 인데요.
이부분은 배열을 배우고 나시면 한결 수월하니 그때 다시한번더 설명하겠습니다.
기초포인터 예제
#include <stdio.h>
int main(void)
{
int num = 10;
int* p = #
printf("num : %d\n", num);
//< 포인터 간접참조연산자~~ *
//*p = 100;
//p = 100; //< '=': 'int *'의 간접 참조 수준이 'int'과(와) 다릅니다.
printf("num : %d\n", num);
printf("p = %p\n", p);
printf("p = %d\n", *p);
return 0;
//65 = 6 * 16 + 4 == 100
}
콜바이 벨류 , 콜바이 어드레스 참조 예제
#include <stdio.h>
//< 값을 교환 하는 간단한 알고리즘
//< swap(스왑)
void swap(int a, int b);
//<
void swap2(int* a, int* b);
int main(void)
{
int num1=10, num2= 100;
puts("call by value");
puts("swap호출");
printf("main swap전 num1 : %d, num2 : %d\n", num1, num2);
swap(num1, num2);
/*
swap
int a = 10;
int b = 100;
*/
printf("main swap후 num1 : %d, num2 : %d\n", num1, num2);
puts("\ncall by address");
puts("swap2호출");
printf("main swap전 num1 : %d, num2 : %d\n", num1, num2);
swap2(&num1, &num2);
/*
swap
int *a = 0x0000 0001;
int *b = 0x0000 0018;
*/
printf("main swap후 num1 : %d, num2 : %d\n", num1, num2);
return 0;
}
//< swap(스왑) : 콜바이 벨류/call by value 값에 의한 호출
void swap(int a, int b)
{
printf("swap전 : %d %d\n", a, b);
int temp = a;
a = b;
b = temp;
printf("swap후 : %d %d\n", a, b);
}
//< 콜 바이 어드레스(콜 바이 레퍼런스)
void swap2(int* a, int* b)
{
printf("swap전 : %d %d\n", *a, *b);
int temp = *a;
*a = *b;
*b = temp;
printf("swap후 : %d %d\n", *a, *b);
}
'C' 카테고리의 다른 글
C언어 기초강의 - 16강 배열(순차LIST) (코딩덕후) (2) | 2022.09.14 |
---|---|
C언어 기초강의 - 14강 - 제어문(반복문for,while,do~while)(코딩덕후) (0) | 2022.09.03 |
C언어 기초강의 프로젝트 업다운 게임 조건문 (0) | 2022.08.31 |
C언어 가위 바위 보 게임( 조건문까지만 사용) (0) | 2022.08.31 |
파일입출력(바이너리,fwrite fread fopen fclose ) (0) | 2022.08.31 |
댓글