1.if문
if (만약에~~)
조건문에 따라 참,거짓을 판별 해서 {} 내부의 명령을 실행함
형식
1 2 3 4 5 6 7 8 | if (조건문) { 실행될부분; } else { 해당조건문에 맞지않을때 실행; } | cs |
ex)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #include <stdio.h> int main(void) { int iNum; printf("숫자 입력:"); scanf("%d",&iNum); if( 100 < iNum ) { printf("100보다 큰수입니다\n"); }else{ printf("100보다 작은수입니다\n"); } return 0; } | cs |
7번 : scanf로 값을 입력받음
9번 : iNum에 입력받은 값이 100보다 작을때
11번 : "100보다 큰수입니다" 출력
12번 : 100보다 작지 않은 모든경우에 "100보다 작은수 입니다" 출력
출력 :
2.전역 변수, 지역변수
메모리 구조
1.CODE
코드 자체를 구성하는 메모리 영역으로 Hex파일이나 BIN파일 메모리
2.DATA
전역변수(global), 정적변수(static), 배열(array), 구조체(structure) 등이 저장됨
초기화되면 DATA영역에 저장
초기화 되지 않으면 BSS (Block Stated Symbol)영역 에 저장됨
3.HEAP
필요에 의해 동적으로 메모리를 할당 하고자 할 때 위치하는 메모리 영역
동적 데이터 영역이라고 부르며, 메모리 주소 값에 의해서만 참조되고 사용되는 영역
4.STACK
프로그램이 자동으로 사용하는 임시 메모리 영역
지역(local) 변수, 매개변수(parameter), 리턴 값 등 잠시 사용되었다가 사라지는 데이터를 저장하는 영역
1.지역변수 (local variable)
변수가 선언된곳에서만 사용가능
선언한 곳을 벗어나면 메모리에서 제거됨
2.전역변수 (global variable)
선언한곳외에서도 어느함수에서건 불러와서 사용가능한 변수
프로그램이 종료될때까지 메모리공간을 계속 차지하며 프로그램 시작시 메모리공간에 할당되는 특징을 가짐(메모리 낭비)
별도로 초기화 하지 않아도 비트 0으로 초기화 되어있음
형식
1 2 3 4 5 6 7 8 | #include <stdio.h> int A; // 전역변수 int main() { int B = 0; // 함수내에 있으므로 지역변수 return 0; } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | #include <stdio.h> int D; // 전역변수 int E = 99; int F; int G = 98; int H; int main(void) { int A = 0; // 함수내에 있으므로 지역변수 int B; int C = 100; printf("C = %p\n",&C); printf("B = %p\n",&B); printf("A = %p\n",&A); //stack 영역 printf("-----------------\n"); printf("E = %p\n",&E); // 값이 있으므로 DATA 영역 printf("G = %p\n",&G); printf("-----------------\n"); printf("H = %p\n",&H); printf("F = %p\n",&F); printf("D = %p\n",&D); //없으므로 BSS printf("-----------------\n"); printf("printf = %p\n",printf); // printf("main = %p\n",main); return 0; } | cs |
3~7번 : 전역변수
10~12번 : 지역변수
14~16번 : 지역변수로써 stack영역에 주소를 가짐
19~20번 : 전역변수이고 값을 가진상태이므로 DATA영역에 주소를 가짐
22~24번 : 값이 없으므로 BSS영역에 주소를 가짐
26~27번 : main 이나 printf는 CODE영역
EX1 출력:
EX 2)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #include <stdio.h> int A; // 전역변수 초기화하지않으면 비트단위로 0이 들어감 bin 0 void smart(void); int main() { //int A = 100; printf("%d\n",A); // printf가 속해있는 함수내에서 A 먼저찾고 그다음 전역변수 찾음 smart(); printf("%d\n",A); return 0; } void smart() { A = 99; } | cs |
11번 : 함수내의 A 값 출력 ( 즉 전역변수값 0)
12번 : smart() 함수 호출
13번 : 지역변수인 A의 값 출력(smart의 A값 99)
EX2 출력:
'코스웨어 > 16년 스마트컨트롤러' 카테고리의 다른 글
20160315_김도관_업무일지_7Segment_스위치제어 (0) | 2016.03.17 |
---|---|
20160316_정일모_업무일지_인터렙트 (0) | 2016.03.17 |
20160316_정일모_업무일지_변수 (0) | 2016.03.17 |
ms 마인크래프트를 인공지능에 활용 (3) | 2016.03.17 |
컴퓨터의 원리에 대해 알아보자 -3- (0) | 2016.03.17 |
컴퓨터의 원리에 대해 알아보자 -2- (0) | 2016.03.17 |
컴퓨터의 원리에 대해 알아보자 -1- (0) | 2016.03.17 |
2016-03-16.강정수.LCD를 이용한 입력표기 (0) | 2016.03.17 |