프로그래밍 공부
작성일
2023. 3. 16. 19:25
작성자
WDmil
728x90

stream = 한방향으로 흐르는 단방향 통신이다.
콘솔 입출력을 위한 스트림은 생성이 자동으로 생성되고 자동으로 소멸된다.
이것은 표준 입출력시스템 stdio.h 라고 한다. 따로 생성하지 않아도 OS에서 자동으로
해준다.

buffer = 데이터 처리장치간의 처리속도 때문에 임시로 저장해놓았다가 출력한다.
getchar = 버퍼를 비워준다. 한단어씩 리턴해준다.

자세한 설명을 주석으로 적어놓았다.


이번에는 포인터를 알아보자.

포인터는 주소라고 생각하면된다. 메모리의 주소값을 이야기한다.

포인터 변수 = 메모리의 주소값을 저장하기 위한 변수 이다.

포인터는 * 을 표기하여 포인터를 선언해줄 수 있다. 밑 예시를 살펴보자.


배열의 이름또한 포인터를 사용한다. 이러한 예시를 밑에서 확인해보자.

이렇게 나타나게 된다.

여기서 데이터 포인터가 1씩 증가하는것이 각 바이트당 증가하는것으로 이해하면 된다.

그 이유를 살펴보면,

1 2 3 4
0x000 0x004 0x008 0x012

이런식으로 배열이 이루어져 있고 밑부분이 주소라고 생각 하였을 때.

한 주소는 최대 어떠한 4byte로 이루어져 있어야 한다. 이 데이터 배열, 데이터의 주소가 어떠한 위치에 생성되는지는 알 수 없다.

 

그 이유는 데이터를 저장 할 때 데이터의 위치값을 지정하는것은 사용자가 아니라 OS가 임의의 저장장소에 저장하기 때문이다. 

그렇기에 일정 저장공간 안에 어떠한 위치에 있는지 좌표를 표기하기 위해 4byte 또는 8byte를 사용하는것 이다.

이로써 우리는 4byte의 저장좌표, 8byte 저장좌표를 통해 더 넓은 데이터 범위 저장이 가능하다는것을 이해할 수 있다.

 

컴퓨터에서 32bit 또는 64bit가 있다는것 을 기억할 것이다. 이러한 bit값으로 주소를 결정하게 되는것이다.

즉, 단순하게 64bit는 더 많은 주소를 할당할 수 있어서 더 큰 저장공간을 활용할 수 있다는 의미이다.

  포인터 변수 배열이름
이름이 존재하는가? 존재 존재
무엇을 나타내거나 저장하는가? 메모리 주소 값 메모리 주소 값
주소값의 변경이 가능한가? 가능 불가능
728x90