몽상실현개발주의

[따배씨] 9.17 포인터 변수의 크기 ~ 9.18 포인터형 매개변수 본문

Language/C

[따배씨] 9.17 포인터 변수의 크기 ~ 9.18 포인터형 매개변수

migrationArc 2021. 6. 3. 23:23

[따배씨] 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

 

 


이 글의 모든 사진과 내용의 출처는 홍정모 교수님께 있음을 알려드립니다.

http://blog.naver.com/atelierjpro

 

실리콘 밸리의 프로그래머 : 네이버 블로그

안녕하세요! 홍정모 블로그에 오신 것을 환영합니다. 주로 프로그래밍 관련 메모 용도로 사용합니다. 강의 수강하시는 분들은 홍정모 연구소 카페로 오세요.

blog.naver.com

http://www.inflearn.com/course/following-c

 

홍정모의 따라하며 배우는 C언어 - 인프런 | 강의

'따배씨++'의 성원에 힘입어 새롭게 개발된 C 언어로 시작하는 프로그래밍 입문 강의입니다. '따배씨'와 함께 프로그래밍 인생을 업그레이드 해보세요., 따라하며 배우는 C언어 '따배씨++'의 성원

www.inflearn.com

Comments