본문 바로가기

언어/C33

[C] 메인함수 정의 메인함수 정의 이 부분은 항상 내가 C를 공부하면서 궁금했던 부분이다학교에서는 항상 int main(void)를 사용했는데 다른 사람이 푼 코드를 보면 이상한 포인터가 매개변수?로 들어가 있는걸 보고 궁금증이 생겼다. 내가 항상 사용하는 main 함수이다.친근하당ㅋㅋ 이건 또 다른 main 함수이다. int argc = 메인함수에 전달되는 데이터의 갯수char* argv[] = main 함수에 전달되는 실직적인 데이터 / char형 포인터의 구조로 이루어짐 만약 우리가 입력을 한다면 그건 argv[1], argv[2]에 순차적으로 들어간다. 인덱스 argv 0 실행 파일 이름으로 실행한 경우 = 실행파일실행 파일 경로로 실행한 경우 = 실행 파일 경로 1 첫 번째 옵션 2 두 번째 옵션 n n 번째 옵션.. 2019. 1. 11.
[C] 파일의 분활과 헤더파일 파일의 분할 & 헤더파일 extern외부에 선언 및 정의된 것을 컴파일러에게 알림ex) extern int num;extern void price(void); static 전역변수다른 파일에서의 접근을 막음ex) static int num=0; 1. #include 표준 헤더파일이 저장되어 있는 디렉터리에서 파일을 찾음 2. #include "헤더파일 이름"이 문장을 포함하는 소스파일이 저자오딘 디렉터리에서 헤더파일을 찾음절대경로로 지정할 수 도 있는데 문제점이 많아서 잘 안쓰임~상대경로를 사용하자! (ex #include "header.h") *구조체의 선언 및 정의는 헤더파일에 삽입하는 것이 좋음*구조체가 두번 이상 선언되지 않도록 주의->중복을 막을라믄 #ifndef ... #endif 를 이용 /.. 2019. 1. 11.
[C] 매크로와 선행처리기 선행처리 컴파일 이전의 처리#문자로 시작ex) #define PI 3.14(지시자) (매크로) (매크로몸체)==오브젝트와 유사한 매크로 == 매크로 상수 매크로 매크로를 정의할때는 괄호를 하나하나 하자!두 줄 이상을 정의할 때는 \ 를 사용매크로 함수장점 단점일반 함수에 비해 실행속도가 빠름 정의하기가 까다로움 자료형에 따라서 별도로 함수를 정의하지 않아도 됨 디버깅하기가 쉽지 않음 따라서 작은 크기의 함수나 호출의 빈도수가 높은 함수에 매크로를 사용함 조건부 컴파일 #if... #endif 참인 if문만 삽입 #ifdef... #endif 매크로가 정의되어 있을경우 동작 #ifndef... #endif 매크로가 정의되어 있지 않은경우 동작 #else 나머지의 경우 #elif #if에만 사용 (else .. 2019. 1. 10.
[C] 메모리 관리 & 동적 할당 메모리 구조 코드 / 데이터 / 힙 / 스택 영역으로 구분 1. 코드 영역코드가 저장되는 메모리 공간 2. 데이터 영역전역변수와 statice으로 선언되는 static 변수가 할당 * 프로그램 종료 시까지 남음 3. 스택영역지역변수와 매개변수가 할당* 함수를 빠져나가면 소멸 4. 힙 영역원하는 시점에 변수를 할당하고 소멸하도록 지원 프로그램의 실행 흐름 1. 전역변수 / static 변수가 데이터 영역에 할당 -> main함수 호출 -> 지역변수가 스택에 할당2. main 내에서 함수가 호출 -> 함수의 매개변수 / 지역변수가 스택에 할당3. 함수의 반환으로 함수호출 시 할당된 매개변수와 지역변수가 소멸4. 프로그램 종료 -> 운영체제에 의해서 할당된 메모리 공간 전체를 반환 -> 전역변수 소멸 * 먼저.. 2019. 1. 9.
[C] 파일 입출력 파일 입출력 fopen 함수 호출 -> FILE 구조체 변수가 생성 생성된 FILE 구조체 변수에 파일에 대한 정보가 담김 FILE 구조체의 포인터 -> 파일을 가리키는 '지시자'의 역할 fclose 함수 파일을 닫는 함수 출력버퍼를 비운다는 것 : 출력버퍼에 저장된 데이터를 목적지로 전송 입력버퍼를 비운다는 것 : 입력버퍼에 저장된 데이터를 소멸 fflush 함수 = 출력버퍼를 비우는 함수 (파일 스트림에도 그대로 적용) 모드 스트림의 성격 파일이 없을경우 r 읽기 가능 에러 w 쓰기 가능 생성 a 파일의 끝에 덧붙여 쓰기 가능 생성 r+ 읽기/쓰기 가능 에러 w+ 일기/쓰기 가능 생성 a+ 읽기/덧붙여 쓰기 가능 생성 텍스트 파일 : 사람이 인식할 수 있는 문자를 담고 있는 파일 rt, wt, at,.. 2018. 12. 7.
[C] 구조체 구조체 구조체 : 하나 이상의 변수를 묶어서 새로운 자료형을 정의하는 도구 struct point{int xpos;int ypos;}; struct point pos; 구조체 변수를 선언과 동시에 초기화할 때에는 중괄호를 사용ex)struct person man={"merona", "010-1234-1234", 20}; 포인터 변수를 구조체의 멤버로 선언 *구조체 변수의 주소 값 = 구조체 변수의 첫 번째 멤버의 주소 값 typedef 선언기존에 존재하는 자료형의 이름에 새 이름을 부여하는 것보통 typedef로 정의되는 자료형의 이름은 대문자로 시작 typedef name1 name2;name1의 또 다른 이름 name2를 선언 ex)typedef struct point{int xpos;int ypos.. 2018. 12. 4.
[C] 문자 & 문자열 관련 함수 C문자 & 문자열 관련 함수 입력: 프로그램 안으로 데이터가 흘러 들어오는 것출력: 프로그램 밖으로 데이터가 흘러 나가는 것 스트림(stream): 프로그램상에서 모니터와 키보드를 대상으로 데이터를 입출력 하기 위해서 이들을 연결시켜 주는 다리의 역할을 하는 매개체 운영체제: 외부장치와 프로그램과의 데이터 송수신의 도구가 되는 스트림을 제공 콘솔(키보드와 모니터) 입출력을 위한 '입력 스트림'과 '출력 스트림': 프로그램이 실행되면 자동으로 생성되고, 프로그램이 종료되면 자동으로 소멸되는 스트림=> 표준 스트림 stdin 표준 입력 스트림 키보드 대상으로 입력 stdout 표준 출력 스트림 모니터 대상으로 출력 stderr 표준 에러 스트림 모니터 대상으로 출력 putcharex) int putchar(.. 2018. 11. 15.
[C] 도전프밍_3 (&난수) 도전프밍_3배열&포인터 Q. 길이가 4x4인 2차월 배열 선언후 배열의 요소들을 오른쪽 방향으로 90도씩 이동시켜 그 결과를 출력 //포인터를 사용해야 하나 고민좀 했는데 그냥 4x4배열 하나를 더만들어서 대입해주는 식으로 했다. 근데 문제의도는 포인터 배열 사용하라는거 같다ㅎㅎ..쓰려다가 말았는데 아직은 포인터가 익숙치 않아서 그런거같다. Q. 숫자 n을 입력받아 n x n 길이에 해당하는 달팽이 배열을 만들고 출력 //어려웠다. 가로세로 부분 반복문에서 한참 헤맸다.. Q. 0 이상 99 이하의 난수를 총 5개 생성하는 프로그램을 작성 //근데 이거 난수가 아니고 일정한 규칙이 있는거 같다.랜덤이면 숫자가 바뀌어야 하는데 바뀌지 않는다 ㅋㅋ Q. 두개의 주사위를 던졌을 때의 결과를 출력 (예측이 불가.. 2018. 11. 15.
반응형