C/C

· C/C
1. 정의 #define을 통해 정의된 함수로 컴파일 이전 '전처리기' 단계에서 소스 코드를 대체시키는 원리로 작동한다. 2. 장점 일반 함수를 호출 할 경우 스택에 메모리를 잡게된다. 매크로함수는 코드를 대치시키는 방식으로 작동하기 때문에 컴파일 단계, 메모리 소비에 대한 부담을 덜 수 있다. 3. 사용 예시 적용될 data type을 지정해주기 위해 인자로 type을 받는다. (어떤 타입이건 컴파일시에 유연하게 적용 가능) 4. 예시 코드 (선택 정렬) 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 30 31 #include #include #include #define MAX 10000 #define SWA..
· C/C
1. 정의 메모리에서 해제 된 공간(ex. free(ptr))을 가리키는 포인터 (허상 포인터) 2. 발생 원인 free를 통해 메모리를 해제했지만 해당 포인터변수가 해제된 메모리 주소를 가지고 있는 경우. 블록 스코프 내에서(ex. 임의의 함수 내에서) 할당된 변수의 주소를 가리키고 블록이 끝난 경우 3. 증상 Segmentation fault memory access deny -> 예측 불가능한 동작 4. 해결 방법 free 할 경우 메모리 해제 이후 해당 포인터변수를 자동으로 NULL을 가리키게한다. free(ptr) ptr = NULL; Dangling Pointer 문제를 자동으로 발견하게 해주는 third party tool 사용 5. 예제 free해도 Dangling Pointer가 되지 않..
· C/C
1. main 함수 원형 Interface int main(int argc, char * argv[]) Parameter argc: Argument Character => Parameter 갯수 argv: Argument Vector => Parameter 문자열을 가리키는 주소를 담은 포인터배열 Function OS로부터 진입(프로그램 시작)을 요청하는 함수. return 0: success 음수: Fail 2. 예제 소스코드 위 예제에서 mine\0 중에n에 접근하고자 하면 argv[0][2] 하면 된다.
· C/C
1. 기본 구조 2. fopen함수 Interface File * fopen(const char* filePath, const char* mode) Parameter filePath: 파일 경로 mode: 옵션이 되는 모드 Return Sucess: File Stream (FILE 구조체 변수의 주소 값) Fail: Null Pointer Option r: read mode (입력 stream) w: write mode (출력 stream) a: appendix mode (덧붙여 쓰기) Function 원하는 파일스트림을 생성하고 파일 디스크립터를 리턴한다. File 구조체의 포인터는 사실상 파일을 가리키는 'File Descriptor' 역할을 한다. 3. fclose함수 Interface int * ..
· C/C
성적처리 프로그램 예제 소스 #include #include #include #define averageScore 70.0F typedef struct _student { char name[10]; char isPass[10]; int korScore, engScore, sum; double average; } student; int main(void) { int index = 0, num = 0; printf("몇 명의 학생 입력? \t"); scanf("%d", &num); student *ptr[3] = {NULL};// 3개의 student형 포인터를 담는 배열 , 초기화 방법에 유의 {NULL} for (index = 0 ; index < num; index++) { ptr[index] = (s..
· C/C
다음과 같은 2차원 배열 선언 소스코드가 있다고 치자 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 #include int main(void) { int arr[3][5]= { {1,2,3,4,5}, {6,7,8,9,10}, {11,12,13,14,15} }; int i = 0, j = 0; int (*p)[5] = &arr[0]; //arr for(i = 0 ; i
M_Falcon
'C/C' 카테고리의 글 목록