소프트웨어학부/프로그래밍 응용 및 실습 4

12장. 고급 프로그래밍

프로그램 할당 메모리 1. 텍스트 2. 데이터 3. 힙 4. 스택헤더 파일정적 외부 변수정적 외부 함수  추상 자료형가변 인자 함수진단 코드 1. #error 2. assert() 3. _Static_assert()자기 참조 구조체플랙시블 배열 멤버  신호헤더 파일  프로그램 순서 1. os 2. 디스크 3. 메모리 4. main()메모리 배치 1. 텍스트 2. 데이터 3. 힙 4. 스택  텍스트 영역  textPC 레지스터  데이터 영역  dataBSS힙 영역  heap  스택 영역  stack스택과 힙  여러 소스 코드를 합쳐서 컴파일 1. 동시에 컴파일 2. 각자 목적 파일을 생성 후 컴파일  gcc -c 사용  사용자 헤더 파일표준 헤더 파일과 #ifndef  외부 변수extern정적 외부 변수s..

9장. 비트 수준 접근

* 이진 값 0과 1  * 비트 이진 값의 각 자리  * 바이트 8개의 비트  * 워드 메모리에서 읽히는 단위  * 비트열 0과 1의 비트가 연속되는 것 비트열 표기는 16진수로 많이 한다 16진수 숫자 하나를 2진수 4자리로 표현하기 때문 ex) 0x49F = 0100 1001 1111  * 비트 단위 연산자  1. 논리 연산자   (1) ~ : 비트 단위 보수   (2) & : 비트 단위 논리곱   (3) ^ : 비트 단위 배타적 논리합   (4) | : 비트 단위 논리합  2. 이동 연산자   (1)   (2) >> : 오른쪽 이동 정수 수식에만 사용 ㄱㄴ 시스템 종속적  * 부호 비트  1. 양수 : 0  2. 음수 : 1  * 마스킹 연산 & 연산자를 사용하여 주어진 비트열의 특정 비트를 0으로..

8장. 사용자 정의형

* 사용자 정의형 사용자가 직접 정의하는 데이터 자료형  1. 구조체  2. 공용체  3. 열거형  * 구조체 서로 다른 형의 변수들을 하나로 묶어줌 구성 요소  1. struct  2. 구조체 태그 이름  3. 구조체 멤버  struct 구조체 선언을 위한 키워드 구조체 선언 ex) struct name_grade { char name[10]; int grade; }; 구조체 변수 선언 struct 구조체명 구조체변수명; ex) struct name_grade st_g1, st_g2; 구조체 멤버 접근 연산자 . ex)  st_g1.name strcpy(st_g1.name, "이순신"); 이 때, st_g1.name = "이순신";은 ㅂㄱㄴ. 배열명은 상수 포인터이기 때문에  * 구조체 변수 선언  1..

7장. 포인터

* 메모리 구조 각 바이트별로 주소가 붙은 1차원 배열  * 포인터 주소를 다루기 위한 자료형 메모리 공간에 접근하는 변수  * 포인터 변수 선언 int * p; int * p, a; int * p, *q;  * 주소 연산자 & 변수의 주소값을 알려주는 연산자 상수, 수식, register 변수에서는 사용 ㅂㄱㄴ  * %p 포인터 변수의 변환명세 scanf("%d", &a); 10진수 방식으로 읽고 a의 주소로 가서 저장  * 포인터 변수 크기 64bit os에서는 8byte 32bit os에서는 4byte sizeof()로 계산하는 게 좋음  * 역참조 연산자 * 메모리 공간의 내용물 꺼내오기 포인터가 가리키는 메모리 공간에 접근하기 위한 연산자  * void형 포인터 변수 만능 포인터 변수 어떤 자료..