몽상실현개발주의

[따배씨] 9.14 포인터와 코딩 스타일 ~ 9.16 디버거로 메모리 들여다 보기 본문

Language/C

[따배씨] 9.14 포인터와 코딩 스타일 ~ 9.16 디버거로 메모리 들여다 보기

migrationArc 2021. 6. 3. 23:20

[따배씨] 9.14 포인터와 코딩 스타일 ~ 9.16 디버거로 메모리 들여다 보기

따배씨 - 따라하며 배우는 C언어

9강 함수

9.14 포인터 Pointer 와 코딩 스타일

#include <stdio.h>

int main(){
    
    int* a, b;
    // a 만 포인터, b는 정수
    
    int* c, * d;
    // c 와 d 둘다 포인터
    
    int* e;
    int* f;
    // 분리하는 표현법이 추천됨
    return 0;
}

 

 

9.15 NULL 포인터와 런타임 에러

#include <stdio.h>

int main(){
    int a;
    printf("%p\n", &a);
    // 0x7ffeefbff488
    
    printf("%d\n", a);
    // 86053
    
    return 0;
}
  • 일반 변수를 선언 후 값을 대입하지 않으면, 쓰레기 값이 저장되어 있음

 

#include <stdio.h>

int main(){
    int *ptr;
    printf("%p\n", ptr);
    // 0x7ffeefbff4a8
    
    printf("%d\n", *ptr);
    // 0
    
    return 0;
}
  • 포인터 변수 선언 후 값을 대입하지 않으면, 0이 기본으로 저장되어 있음

 

#include <stdio.h>

int main(){
    int *ptr = 123;
  
    printf("%p\n", ptr);
    printf("%d\n", *ptr);
    
    return 0;
}
  • Runtime Error 발생
    • 123 이라는 주소에 접근하였기 때문에 문제 발생

 

#include <stdio.h>

int main(){
    int* safer_ptr = NULL;
    // 포인터를 선언 하자 마자 NULL로 초기화
    
    int a = 123;
    
    int b;
    scanf("%d", &b);
    
    if (b % 2 == 0)
        safer_ptr = &a;
    
    if (safer_ptr != NULL)
        printf("%p\n", safer_ptr);
    
    return 0;
}
  • 포인터의 사용에 NULL 로 초기화해서 사용하는것이 일반적

 

9.16 디버거로 메모리 들여다 보기

- skip

 

 


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

http://blog.naver.com/atelierjpro

 

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

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

blog.naver.com

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

 

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

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

www.inflearn.com

Comments