본문 바로가기

728x90

Lang/C

(7)
[C] 자료 구조 # 단일 연결 리스트 Single Linked List # 연결 리스트 각 노드가 데이터와 다음 노드를 가리킬 포인터를 가지고 한 줄로 연결되어 있는 방식의 자료 구조입니다. - 배열과 다른 점 세 개의 데이터가 있는 배열[3]이 있다면 배열[0]부터 배열[2]까지 메모리의 연속된 곳에 자리하게 됩니다. 연결리스트는 각 노드가 각자 생성될 때 할당받은 다른 메모리 주소를 갖습니다. 그래서 다음 노드의 주소를 가리키는 포인터가 필요한 것입니다. - 장단점 데이터의 추가 삭제가 빠릅니다. 시간복잡도 O(1) 특정 위치의 데이터 검색이 오래걸립니다. 시간복잡도 O(n) - 노드 Node 노드에는 각종 데이터 변수와 다음 노드를 가리킬 포인터 변수가 필요합니다. 따라서 여러가지 타입의 집합체인 구조체로 정의합니다. struct Node{// 노드 이름 int val..
[C] 포인터 # 함수 포인터의 이해 # 함수 포인터의 정의 함수 포인터는 함수를 가리키는 포인터입니다. 포인터는 메모리상의 주소를 저장하는 변수인데, 함수도 메모리에 존재하며 그 시작 주소가 있으므로 포인터 변수로 가리킬 수 있습니다. 정수형 데이터 타입을 가리키는 정수형 포인터는 정수형 변수의 주소를 가집니다. 하지만 함수는 그 안에 여러 데이터 타입이 있을 수 있기 때문에 좀 더 복잡한 선언 형식이 필요합니다. * 함수포인터의 선언 리턴 타입 (*변수명)(인수의 목록) int func(int x); 라는 함수를 가리키는 함수 포인터를 선언하려면 int (*mypf)(int x); 로 선언해야합니다. - 함수 포인터 선언 방법 함수 선언식에서 1. 함수명을 필요한 변수명으로 바꾸고 2. * 를 붙이고, 3. ( ) 감싸면 됩니다. 여기에..
[C] 문자열 서식 # 이스케이프 시퀀스 # 이스케이프 시퀀스 종류 이스케이프 시퀀스 설명 \n 커서를 한 줄 아래로 내립니다. \a 윈도우 경고음 출력 \b 커서를 한 칸 왼쪽으로 이동합니다. \r 커서를 그 줄의 맨 왼쪽 처음으로 이동합니다. \t 커서를 탭 만큼 오른쪽으로 이동합니다. \" 문자 " 자체를 출력합니다. \' 문자 ' 자체를 출력합니다. \\ 문자 \ 자체를 출력합니다. \? 문자 ? 자체를 출력합니다. \ooo 아스키코드 문자를 8진수로 표현합니다. \xhhh 아스키코드 문자를 16진수로표현합니다. \f 프린터에서 다음 페이지로 이동합니다. 콘솔에서는 특수문자가 출력됩니다. \v 프린터에서 세로 탭으로 이동합니다. 콘솔에서는 특수문자가 출력됩니다. # 예제 #include #include int main() { printf..
[C] C와 C++ Integer의 MIN, MAX # 헤더 C의 에 정의되어 있습니다. C++의 에 가 포함되어 있습니다. 으로도 사용할 수 있습니다. # 정수 상수 리스트 상수 설명 값 CHAR_BIT 비트 필드가 없는 가장 작은 변수의 비트 수 8 SCHAR_MIN signed char의 최솟값 -128 SCHAR_MAX signed char의 최댓값 127 UCHAR_MAX unsigned char의 최댓값 255 (0xff) CHAR_MIN char의 최소값 -128 CHAR_MAX char의 최댓값 127 MB_LEN_MAX 여러 문자 상수에서의 최대 바이트 수 5 SHRT_MIN short의 최솟값 -32768 SHRT_MAX short의 최댓값 32767 USHRT_MAX unsigned short의 최댓값 65535 (0xffff) INT..
[C] C 문법 공부 #3 문자열 함수 # 문자열 함수 헤더 #include 함수 설명 strcpy ( 대상문자열, 소스문자열 ) 소스 문자열을 대상 문자열에 복사합니다. strncpy (대상, 소스, 길이 ) 소스 문자열의 일부분을 대상 문자열에 복사합니다. strcat (대상, 소스 ) 소스 문자열을 대상 문자열의 뒤에 붙입니다. strncat (대상, 소스, 길이 ) 소스 문자열의 길이만큼 대상 문자열 뒤에 붙입니다. strcmp ( 문자열1, 문자열2 ) 두 문자열의 크기를 비교합니다. strncmp (문자열1, 문자열2, 길이 ) 두 문자열의 길이까지의 크기를 비교합니다. stricmp ( 문자열1, 문자열2 ) 대소문자 구분하지 않고 두 문자열의 크기를 비교합니다. strnicmp (문자열1, 문자열2, 길이 ) 대소문자 구분하지 ..
[C] C 문법 공부 #2 입력 scanf(), gets(), getch(), kbhit() # scanf()의 기본 형태 scanf("%d", &x); 정수를 입력받아 변수 x에 대입한다. # 간단한 정수 입력 및 활용의 예 int a, b; int sum; printf("첫 번째 숫자: ");// 프로그램이 실행되면 여기까지 실행된 후 scanf("%d", &a);// 키보드로 숫자 입력 후 엔터 입력까지 대기 printf("두 번째 숫자: ");// 입력완료하면 여기까지 실행된 후 scanf("%d", &b);// 다시 키보드로 숫자 입력 후 엔터 입력까지 대기 sum = a + b; printf("두 수의 합은 %d입니다.\n", sum);// 다시 입력완료하면 여기까지 실행된다. 첫 번째 숫자: 12 두 번째 숫자: 23 두 수의 합은 35입니다. # gets()의 기본 형태 gets(..
[C] C 문법 공부 #1 출력 printf() # printf - 기본형 printf("서식문자열", 인수, 인수, ...); 서식문자열을 출력하되, 서식문자열에 %로 시작되는 서식이 있다면 뒤에 인수를 문자열에 추가하여 같이 출력한다. int num = 20; char c = 'a'; int sum = 100; float average = 33.3; printf("문자열 출력"); printf("숫자는 %d이고, 문자는 %c입니다\n", num, c); printf("합계: %d, 평균: %f", sum, average); 문자열 출력 숫자는 20이고, 문자는 a입니다 합계: 100, 평균: 33.3 # 서식 종류 서식 의미 설명 %d or %i Decimal, Integer 10진 정수로 출력한다. %ld Long Decimal long 범위까지..

728x90