[혼공C] 6주차

JISO.O·2022년 8월 21일
0

혼공학습단

목록 보기
6/19
post-thumbnail

혼공C 6주차🥳


😀기본미션

포인터의 핵심 내용을 정리하고 공유하기

메모리의 주소

  • 메모리는 우리가 데이터를 넣고 꺼내 ㅆ는 공간으로, 그 위치를 식별할 수 있어야 한다. 프로그램은 메모리의 위치를 주소 값으로 식별할 수 있다. 메모리의 값은 바이트 단위로 구분되며, 0부터 시작된다.
    예를 들어 int형 변수 a가 메모리 100번지부터 할당되었다면 100번지부터 103번지까지 4바이트에 걸쳐 할당된다.

주소 연산자 : &

  • 변수가 할당된 메모리 공간의 시작주소는 주소 연산자 &로 알아볼 수 있다.

    위의 사진처럼 주소를 나타내는 %u와 주소 연산자 &를 사용하여 변수의 주소값을 구할 수 있다.

포인터와 간접 참조 연산자 : *

  • 메모리의 주소는 필요할 때마다 계속 주소 연산을 수행하는 것보다 한 번 구한 주소를 저장해서 사용하면 편리한데, 포인터가 변수의 메모리 주소를 저장하는 변수이다. 변수 앞에 를 붙여주면 포인터를 사용할 수 있다.

    _변수 a와 포인터
    pa를 선언하였다.
    pa에 a의 주소값을 넣고, 포인터로 변수 a에 10을 대입하였다.
    pa = &a에서 pa는 a의 주소값을 갖게 되었고, pa = 10;에서 pa가 a의 주소값을 가리키며 10을 대입했다. 따라서 pa와 a는 10의 값을 갖게 되었다.

const를 사용한 포인터

  • const는 예약어를 포인터에 사용하면 이는 가리키는 변수의 값을 바꿀 수 없다는 의미로, 변수에 사용하는 것과는 다른 의미를 가진다.
    즉, *pa = 20;과 같이 pa가 가리키는 변수는 pa를 간접참조하여 바꿀 수 없다는 것이다.

포인터의 대입 규칙

  • 포인터는 가리키는 변수의 형태가 같을 때만 대입해야 한다.
  • 형 변환을 사용한 포인터의 대입은 언제나 가능하다.

포인터를 사용하는 이유

  • 포인터를 사용하려면 추가적인 변수 선언이 필요하며 여러가지 연산을 수행해야 하므로 포인터를 일부러 즐겨 사용할 필요는 없다. 하지만 임베디드 프로그래밍을 할 때 메모리에 직접 겁근하는 경우나 동적 할당한 메모리를 사용하는 경우엔ㄴ 포인터가 반드시 필요하다.
    - 임베디드 프로그래밍 : 임베디드 시스템을 제어하기 위한 프로그램

😎추가 미션

나만의 언어로 포인터 정리하기

&주소 연산자 : 변수의 주소를 알 수 있는 연산자

* 포인터 : 변수의 위치를 가리키며 포인터가 주소를 가지고 있어 포인터로 값을 바꿀 수 있다. 포인터의 크기는 컴파일러에 따라 다를 수 있으며, sizeof연산자로 확인한다. 포인터는 가리키는 자료형이 일치할 때만 대입할 수 있다.


벌써 혼공학습단이 마지막주라니 아쉽기도 하고 후련하기도 하다.
포인터는 아직 어렵기 때문에 조금 더 공부를 할 것이다.
6주동안 열심히 혼공단 활동을 하면서 공부도 하고, 다른 사람들이 정리한 것들도 보면서 많이 배운 것 같다.🐣

profile
미림마이스터고등학교에서 개발을 공부중인 학생입니다!

0개의 댓글