인삿말
안녕하세요 알다브입니다.
벌써 네 번째 글이네요!ㅋㅋㅋ
시간 정말 빠른 것 같아요.
여러분은 하루하루를 의미있게 보내고 계신가요?
여러분들이 제 글을 보고 얻는게 있다면
저한텐 굉장히 의미가 있을 것 같네요ㅎ
자, 각설하고 저번 시간에
scanf(), printf() 함수에 대해 배웠죠?
scanf() 함수를 통해 데이터를 변수에 저장하고
printf() 함수를 통해 변수에 저장되어 있는
데이터를 화면에 출력한다고 했는데요.
오늘은 이 변수에 대해서 제대로
배워보도록 하겠습니다
혹시 전 글을 보지 않으셨다거나
복습을 하고 싶으시다면
보고 오시는 걸 추천드릴게요!
C언어 독학 #3. printf(), scanf() 데이터 출력과 입력
변수의 뜻
변수는 데이터를 사용하기 위한
임시 저장공간을 의미합니다.
scanf() 함수를 통해 데이터를 입력하면
이 데이터를 쓰기 전까지는 임시로
저장하는 공간이 필요하잖아요?
꼭 scanf() 함수를 사용할 때 만이 아닙니다!
프로그래밍을 하다 보면 엄청나게 많은
데이터를 다룰 수도 있는데요.
이런 데이터들은 다 임시공간이 필요합니다.
박스로 예를 들어볼게요.
우리가 택배를 보낼 때 물건을 박스에 담아서
보내죠? 택배에 있는 물건들은 상대방이
뜯어 보기전 까지는 임시저장 되어있습니다.
변수는 메모리 공간에서 이러한 박스의 역할을 합니다.
데이터에 따른 변수의 형태
위에서 변수를 박스로 예를 들었습니다.
생각해보면 택배를 보내려고 박스를 사용하면
한 가지 물건만 저장하는 것은 아닙니다.
우리가 원하는 물건을 담아서 보낼 수 있죠.
변수도 마찬가지입니다.
변수에는 문자가 들어가기도 하고
숫자가 들어가기도 합니다.
우리가 택배를 보낼 때 무엇을
보내는지 종류를 적게 되는데요.
변수도 이렇게 데이터 형태에 맞춰서 종류를 나타내는 것이 필요합니다.
그래야 메모리 공간에 맞게
변수를 쓸 수 있습니다.
이해되셨죠??
변수 선언
위에서 변수를 쓰려면 데이터 형태에
맞춰서 쓸 수 있다고 했죠.
데이터 형태에 맞춰 메모리 공간을
할당받고, 쓰는 포맷도 달라지게
됩니다.
이 표에 데이터형에 맞게
포맷과 크기가 나와있습니다.
크기의 단위는 1바이트입니다!!
(1바이트 = 8비트)
char 형은 한 개의 문자를 저장합니다.
ex) 'a', '4'
(여기서 '4'는 작은 따옴표 안에 있기 때문에
문자로 간주합니다.)
int 형은 정수를 저장합니다.
표에서 int 형이 또 네 가지로
나뉘게 되는데 이것은 데이터의 크기에
따라 나뉘는 것 입니다.
float 형과 double 형은 실수를 저장합니다.
double 형은 float 형 보다 더 큰 실수 데이터를
저장하는데 사용됩니다.
그리고 각 변수는 짝지어진 포맷에 맞게
사용할 수 있습니다.
변수의 종류에 대해 알아봤으니
변수 선언을 하러 가볼까요?
간단하죠? 같이 해석해봐요!
a는 정수를 저장하는 변수
b는 실수를 저장하는 변수
c는 한 개의 문자를 저장하는 변수
다들 이정도는 쉽게 아실 거라 생각합니다 ㅎ
변수 정의
위에서 변수를 선언하는 것에 대해 배웠습니다.
이제는 무엇을 해야할까요?
예를 들어 핸드폰을 담는 박스가
생겼다고 합시다.
그럼 그다음 차례는?
맞습니다. 바로 핸드폰을 담는 것입니다.
int형 변수를 선언했으면
이제 이 변수에 정수를 넣어주면 되는 것입니다.
데이터를 저장하는 연산자는
'='
입니다.
int a;
변수를 선언했으면
a = 10;
로 데이터를 넣어주면 됩니다.
이 과정을 변수 정의라고 합니다.
변수를 선언하고 정의까지 하는 과정을
합쳐서 초기화 과정이라고 합니다.
또한 변수의 선언과 정의는 같이 할 수 있습니다.
int a = 10;
이렇게 말이죠.
또한 정의를 할 때에는
연산의 결과값도 넣을 수 있습니다.
그럼 다음 코드를 확인해볼까요?
한 번 여러분도 직접코드를 작성하시고
결과 화면을 비교해 봐요 ^^
행운의 77이네요
지금까지는 변수의 정의에 대해 알아봤는데요.
이제는 변수가 어떻게 활용되는지에 대해
알아보도록 하겠습니다.
우선 변수에 저장된 데이터는 바꿀 수 있습니다.
또 핸드폰 박스로 예를 들면
핸드폰을 임시로 저장하는 거고
핸드폰이기만 하면
어떠한 종류에 핸드폰이라든지
다 저장할 수 있다는 것입니다.
갤럭시s7을 넣었다가
아이폰을 넣을 수도 있고
빼서 또 다른 것을 넣을 수 있다는 것이죠.
int형 변수 a를 예로 들면
a=10;
a에 10을 저장했다가
a=90;
90을 저장!
이런식으로 값이 변할 수 있다는 겁니다!
다음 코드를 볼게요.
결과가 어떻게 될까요?
이 코드에서 a+20이 무슨 의미인지
헷갈려 하실 수도 있는데
변수 a의 데이터를 쓰라는 것입니다.
a의 데이터는 50이었으니까
50+20이 되겠죠?
그리고 이 연산값이 a에 저장이 됩니다.
주의할 점
1) 변수 선언은 제일 앞쪽에!
변수는 함수의 제일 앞쪽에 선언해야 합니다.
정의는 상관없습니다.
변수 선언을 함수 중간에 하거나
끝에 할 시 컴파일 에러가 나게 됩니다.ㅜㅜ
꼭 지켜주세요!
2) 변수의 이름을 의미있게!
저번에 주석을 설명했을 때
주석을 사용하는 이유가
뭐라했었죠?
바로 복잡한 프로그램을 구상할 때
코드의 의미를 설명하기 위해서
쓴다고 했었죠?
변수의 이름도 똑같습니다.
변수의 역할이 뭔지 어떻게 쓰이는지
변수의 이름에 그 의미가 담겨있어야
프로그램을 해석하기 수월합니다.
그리고 변수 이름을 지을 때 몇가지 주의할 점이
있습니다.
첫 번째) 특수문자는 '_'만 가능하다.
두 번째) 공백은 사용할 수 없다.
세 번째) 대소문자 구분을 명확하게 해야한다.
네 번째) 이름의 시작은 반드시 알파벳이나 '_'만 사용.
다섯 번째) 키워드를 사용하면 안 된다.
주의할 점에서 마지막에 키워드를
사용하면 안 된다고 했는데요.
키워드가 무엇일까요?
바로 c언어에서 고유한 의미를 갖고 있는
예약어입니다.
프로그래밍 언어마다 키워드가 있는데 c언어에는
많은 키워드가 존재합니다.
키워드 30개만 정리해봤습니다!
참고하시길 바랍니다.
변수의 시작 주소
위에서 변수는 메모리 공간에서
저장공간의 역할을 한다고 했습니다.
그래서 메모리 공간에서의 저장공간인
변수를 찾기 위해서는 변수의 시작주소를
알아야 합니다.
즉, 이 시작주소가 변수의 위치를 나타냅니다.
따라서 모든 변수들은 시작 주소를 갖고 있는데요.
&연산자를 사용하면 변수의 시작 주소를 알 수 있습니다!
&연산자 어디서 많이 보지 않았나요?
맞습니다. 바로 scanf() 함수를 쓸 때
봤었어요! printf() 함수에서 데이터를 출력할 때와
다르게 scanf() 함수에서는 & 연산자와 변수를
같이 썼었죠.
바로 데이터를 입력받아서 그 변수의 주소에
값을 저장하라는 의미가 됩니다!
& 연산자를 사용해서 실제
변수의 메모리 주소를 확인할 수 있습니다.
a의 주소를 16진수로 출력해보면
53faf0 라는 변수 a의 주소를
확인할 수 있습니다!
마무리
오늘은 이렇게 변수에 대해서 알아봤습니다.
이해가 잘 되셨나요?
궁금한게 있으시면 댓글로 달아주세요!
남은 하루도 잘 보내세요~
'프로그래밍언어 > c언어' 카테고리의 다른 글
C언어 독학 #6. 연산자 (0) | 2020.05.13 |
---|---|
C언어 독학 #5. 상수 변하지 않는 데이터 (2) | 2020.05.12 |
C언어 독학 #3. printf(), scanf() 데이터 출력과 입력 (4) | 2020.04.21 |
C언어 독학 #2. 구조 및 Visual studio로 프로그램 실행 (6) | 2020.04.20 |
C언어 독학 #1. 소개 및 개발 환경(Visual Studio) 설치 (6) | 2020.04.19 |