반응형

나미/C 41

23. 배열

배열이란???? 같은 자료형(int, float, char, ...)을 가진 데이터가 연속적으로 사용되어질때 이들을 한꺼번에 차례차례 나열하여 메모리를 할당하는 자료구조를 말한다. 보통은 같은 자료형을 가진 변수들이 여러개가 필요할 때 주로 사용되어진다. 배열의 선언 int array[10]; 위와 같은 형태로 선언을 합니다. int - 자료형, array - 배열이름, [10] - 배열 길이를 뜻합니다. 단, 특이하게도 배열을 선언과 동시에 초기화를 할경우 예를 들어 설명하면 int array[2] = {1, 2}; 정상적인 초기화. int array[2]; 배열은 연속적인 메모리 할당이므로 배열이름만 사용할 경우 주소를 가지는 상수 array = {1, 2}; 이므로 상수에 상수를 대입할 수 없다. ..

나미/C 2013.04.03

22. 함수선언과 정의

함수 함수는 특정작업을 수행하기 위해 동작하는 프로그램을 말한다. C프로그램의 경우 여러개의 함수들로 구성되어 소스를 코딩한다. 함수 여러개를 사용하는 이유는 다음과 같다. - 프로그램 작성에 난이도를 낮출수가 있다. - 하나의 큰 프로그램을 효율적으로 나누어서 작업할 수 있다. - 자주 사용하는 코드는 함수로 작성하여 필요할 때 마다 반복적으로 호출해서 사용할 수 있다. - 한번 오류가 검증된 함수는 다시 오류검사를 할 필요성이 없다. 이처럼 함수를 유용하게 사용할 수 있기 때문에 함수를 잘 이용한다면 보다 간결한 소스를 작성할 수 있다. 함수의 선언 함수를 사용하기 위해서는 보통의 경우 main함수 위에 바로 직접 함수를 코딩하거나, 선언부를 main함수 위쪽에 적어두고 밑에 함수를 코딩하는 방법이 ..

나미/C 2013.03.28

21. 비트연산자

비트연산자 연산자 기능 수식 수식의 의미 & 논리곱 a&b a와 b의 논리곱 | 논리합 a|b a와 b의 논리합 ^ 베타적 논리합 a^b a와 b의 베타적 논리합 ~(틸트) 비트반전 ~a a의 각 비트를 반전 b a를 b만큼 우측으로 이동 172와 106으로 예시 &&와 &의 차이 172 && 106 = 1 의 결과값이 나온다 이것은 단순히 앞에서 설명했듯이 참(1)과 거짓(0)만 구별하는 논리식 172 & 106 = 40 이라는 결과값이 나오게 된다. 좀더 자세히 알아보자. 172 => 1010 1100 2진수 106 => 0110 1010 2진수 1 0 1 0 1 1 0 0 > 172 & 0 1 1 0 1 0 1 0 > 106 ㅡㅡㅡㅡㅡㅡㅡㅡㅡ 0 0 1 0 1 0 0 0 > 40 둘다 1이 되는 값..

나미/C 2013.03.25

20. 메모리를 구성하는 5가지 영역

실제로 우리는 컴파일을 걸쳐 실행파일이 생성되고 실행을 거치게 된다. 이 실행파일이 어떻게 어떤방식으로 실행되는지를 메모리를 구성하는 5가지 영역을 통해서 설명한다. 위의 그림은 함수, 상수 , 제어문을 모두 표현한 그림이다. 이3가지는 어디에 속해있지는 않다. Code - 프로그램의 명령이 주로 저장되는 공간을 말한다. 명령어가 저장되면 기계어로 변환하여 수행. Data - 주로 항상 저장되어야 하는 데이터를 저장하는 공간을 말한다. 가장 최근의 값을 저장. Bss - Data에서 초기화되기 전의 값을 저장. Heap - 사용자에 의해서 주로 저장되거나 해체되는 부분을 저장하는 곳이다. 위에서 밑으로 데이터를 저장. (동적할당)이라고도 한다. Stack - 컴파일을 하게되면 임시적인 데이터를 자동적으로..

나미/C 2013.03.21

19. IEEE 754 표준 - float, double형의 실수저장방식

이 사진은 앞서 눈에 익혀 두었을것이다. 포인터 개념을 설명하였기에 이번엔 자세히 float 과 double 의 저장 방법에 대해서 설명할 것이다. 천천히 하나씩 이해하고 넘어가길 바란다. float a = 10000.625f; 를 저장한다고 가정하에 설명을 한다.(32비트 기준) 1번. 먼저 소수점 앞의 10000을 2진수로 변환한다. 변환된 값은 : 10 0111 0001 0000 이다 (2로 나누어 계산) 2번. 소수점 뒷자리 0.625를 2진수로 변환한다. 변환된 값은 : 101 이다. (2로 곱하여 계산) 3번. 1번과 2번을 나열하면 10 0111 0001 0000.101 이된다. 4번. 101앞의 소수점을 맨 앞의 1바로 전으로 옮긴다. 즉 1.0011 1000 1000 0101 총 13칸 ..

나미/C 2013.03.21

18. Point와 Symbol Table

Point의 의미 Point는 내가 원하는 특정 주소의 값을 지정하여 사용할때 쓰인다. 하나하나 메모리 주소를 적기 어려우므로 Point변수를 사용하여 손쉽게 이용할수 있다. 예를 들어 확인해보자. int a; int *p; a = 10; p = &a; printf("변수 a의 값 : %d". a); a의 값을 그대로 출력한다. 즉 10이라는 결과값이 출력된다. printf("변수 a의 주소값 : %p", &a); a의 주소값이 16진수로 0x12ff60 라는 주소값이 출력된다. printf("변수 p의 주소값 : %p", p); p를 찍었지만 p가 가르키는것은 a의 주소이므로 바로위의 주 소값인 0x12ff60 라는 주소값이 출력된다. printf("변수 *p의 값 : %d", *p); *p를 찍으면 ..

나미/C 2013.03.20
반응형