Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Algorithm
- 따배씨
- Python
- String
- C언어
- server
- sorting
- 인프런
- 종만북
- BASIC
- 백준
- Cleancode
- 따라하면서 배우는 C언어
- 따라하며 배우는 C언어
- JavaScript
- BOJ
- udemy
- C
- web
- DP
- 정수론
- Algospot
- 생활코딩
- php
- Math
- programmers
- greedy
- BFS
- graph
- dfs
Archives
- Today
- Total
몽상실현개발주의
[따배씨] 9.17 포인터 변수의 크기 ~ 9.18 포인터형 매개변수 본문
따배씨 - 따라하며 배우는 C언어
9강 함수
9.17 포인터 변수의 크기
#include <stdio.h>
int main(){
char a;
float b;
double c;
char* ptr_a = &a;
float* ptr_b = &b;
double* ptr_c = &c;
printf("%zd %zd %zd\n", sizeof(a), sizeof(b), sizeof(c));
// 1 4 8
printf("%zd %zd %zd\n", sizeof(ptr_a), sizeof(ptr_b), sizeof(ptr_c));
// 8 8 8
printf("%zd %zd %zd\n", sizeof(&a), sizeof(&b), sizeof(&c));
// 8 8 8
printf("%zd %zd %zd\n", sizeof(char*), sizeof(float*), sizeof(double*));
// 8 8 8
return 0;
}
- 주소 값을 저장하는 메모리 크기는 8 byte - 64bit 운영체제
- 32bit 운영체제 - 4byte
9.18 포인터 Pointer 형 매개변수
#include <stdio.h>
void swap1 (int a, int b);
void swap2 (int* a_ptr, int* b_ptr);
int main(){
int a = 123;
int b = 456;
printf("%p %p\n", &a, &b);
// 0x7ffeefbff488 0x7ffeefbff484
swap1(a, b);
// 0x7ffeefbff44c 0x7ffeefbff448
swap2(&a, &b);
// 0x7ffeefbff488 0x7ffeefbff484
return 0;
}
void swap1(int a, int b){
printf("%p %p\n", &a, &b);
}
void swap2(int *a_ptr, int *b_ptr){
printf("%p %p\n", a_ptr, b_ptr);
}
- 변수를 받아 처리하면, 호출된 함수 영역에서 새로운 변수가 생성됨
- 다른 메모리 주소를 가진, 새로운 값
#include <stdio.h>
void swap (int* a_ptr, int* b_ptr);
int main(){
int a = 123;
int b = 456;
printf("%d %d\n", a, b);
// 123 456
swap(&a, &b);
printf("%d %d\n", a, b);
// 456 123
return 0;
}
void swap(int *a_ptr, int *b_ptr){
int temp = *a_ptr;
*a_ptr = *b_ptr;
*b_ptr = temp;
}
- 새로운 함수에서 main 함수 영역의 변수에 포인터를 이용하여 직접 접근
- 변수명으로 호출: call by value
- 포인터 주소로 호출: call by pointer, call by address
이 글의 모든 사진과 내용의 출처는 홍정모 교수님께 있음을 알려드립니다.
'Language > C' 카테고리의 다른 글
[따배씨] 10.2 배열의 기본적인 사용 방법 (0) | 2021.06.04 |
---|---|
[따배씨] 10.1 배열과 메모리 (0) | 2021.06.04 |
[따배씨] 9.14 포인터와 코딩 스타일 ~ 9.16 디버거로 메모리 들여다 보기 (0) | 2021.06.03 |
[따배씨] 9.13 포인터의 기본적인 사용 방법 (0) | 2021.06.03 |
[따배씨] 9.12 포인터 Pointer 의 작동 원리 (0) | 2021.06.03 |
Comments