C언어 Chapter 24. 문자열 함수들 문자열 함수는 파일을 #include문을 이용해서 포함시켜 사용한다. int strlen (char *s) 문자열의 길이를 세어주는 함수이다. int strcmp (char *s1, char *s2) cmp : compare 약자 ( 비교 ) 두 문자열의 사전상(아스키코드)의 위치를 비교한다. 문자열 s1과 s2의 사전상의 위치가 s1아 s2보다 빠르면 음수, s1과 s2가 같으면 0, s1이 s2보다 뒤에 오면 양수를 돌려준다. Ex) strcmp함수 구현 결과 : "123", "1235" 를 한자리씩 비교하여 4째자리인 NULL과 5를 비교하여 함수내부에서 0(NULL) - 5..
C언어 Chapter 23. void * void : 값을 회피하다. ( void 는type아니다. 즉 변수 type으로 사용할수 없다. ) void * (type 이다) : 4byte 를가지는 포인터를 뜻한다. ( void * 는type 이다. 변수 type로 사용할수 있다.) void * 는 가리키는 대상의 type 을 가리지 않고 가리킬 수 있다. ( 자료형이 정해져있지 않음으로 모든 자료형을 가릴킬 수 있다.) 주소를 가릴킬수 있지만 대상의 값을 읽거나 쓸수는 없다. 캐스팅을 이용하여 읽거나 쓰는 것이 가능하다. 🔔 예) *(int *)vp 🔔 예) void *의 사용 🎯 프로그램 설명 void *는 자료형 int, char, float 등 을 가리지않고 가리킬수있다. void * 만으로 값을 읽..
C언어 Chapter 22. 문자열 문자열 상수 문자열은 문자형 배열이다. 문자형 상수는 작은따옴표로 표시한다. 문자열 상수는 큰따옴표로 표시한다. 💡 문자열은 존재하지 않는다. 문자배열이 존재한다. 집합 관계에서 문자열은 문자 배열에 포함된다. 문자 상수 : 'a', '3', '%', '+' 문자열 상수 : "This is a string." 문자 상수는 1byte 이다. 문자열은 컴파일러에 의해 자동적으로 맨마지막에 NULL문자('\0')가 들어간다. "This is a string." 문자열 type은 (const char *) 변하지않는 주소값이다. 문자열 상수 "string" 를 넣었을 때 메모리 🔔 예) 문자열의 길이를 알아보는 프로그램 🎯 프로그램 설명 size = sizeof("string..
C언어 Chapter 21. 다차원 배열 과 포인터의 관계 포인터는 1차원 배열은 가르킬 수 있지만, 다차원 배열은 가르킬수 없다. 🔔 예) 🎯 프로그램 설명 3차원 배열을 포인터 p(1차원) 로 출력한경우 결과 : warning 메시지는 뜨지만 1을 출력 한다. 하지만, *(p+1) 을 해보면 포인터 p는 1차원 이동만하는 것을 알수있다. 🔔 예) 포인터는 함수 인자로 사용하면 3차원배열을 이동 증명 🎯 프로그램 설명 p는 1차원 이동이라 p + 12 일때 77자리의 주소가 BFFFF998 이다. 함수 인자로 사용한 p3 는 p + 1 일때 BFFF998에 포인터크기와 동일한 4Byte이다. 즉 함수 인자로 사용하면 포인터로 3차원배열을 가리킬수있다. 결과 : mian 함수의 포인터 p는 1차원적 이동..
C언어 Chapter 20. 🎯 배열 복습 - 배열은 포인터와 유사하여 사용방식이 다양하다. A[0] = 8; *(A+0) = 8; *A = 8; - 위 소스는 모두 같은 것을 의미한다. 다차원 배열 지금까지의 배열은 일직선상에 늘어서 있는 1차원적인 개념이였다. 다차원배열에서 2차원배열에 대해 살펴보자. 🔔 예) 2차원 배열을 초기화하여, 화면에 출력하는 프로그램 💡 위 배열 선언 형식은 선언과 동시에 초기화 하였을때만 가능하다. 🎯 프로그램 설명 array[3][4] 에서 [3]은 '행', [4]는 '열'을 뜻한다. array[4]→ [0] [1] [2] [3] [0] 0, 0 0, 1 0, 2 0, 3 [1] 1, 0 1, 1 1, 2 1, 3 [2] 2, 0 2, 1 2, 2 2, 3 ↑ arra..
C언어 Chapter 19. 배열 복습 int word[3]; &word + 1 위와 같은 연산일 경우 배열 전체 이동으로 4byte 씩 3번 이동. 즉, 주소값이 12byte 이동한다. 💡 gcc --version : gcc 버전 출력 명령 🔔 예) 배열의 주소값 증가 🎯 프로그램 설명 &Data + 1 의 결과 값이 BFFFF9BC BFFFF9B4 보다 12byte 이동한 것을 알 수 있다. 결과 🔔 예) 포인터 표기법과 배열 표기법을 사용한 프로그램의 예 결과 : 포인터 표기법에 따른 다양한 배열의 합을 구하는 방법을 알려준다. const 🔔 예) const 위치에 따른 변화 🎯 프로그램 설명 int *p =Data; const int * cp = Data; int * const pc = Data;..
C언어 Chapter 18. 함수 포인터 같은 형식의 "ABCDEF" 문자 배열이면 변수가 달라도 같은 주소값을 쓴다. char word[] = "ABCDEF"; 위와 같이 배열의 수를 적지 않는 경우 자동으로 오른쪽값을 세어준다. (NULL을 포함해 7byte) (" ") 는 printf에서 인자 이며 주소값을 가지는 Read만 가능한 상수이다. 📌 상수(변하지않는 수) 선언 const char a; 🔔 예) printf 함수의 진실 🎯 프로그램 설명 지금까지 써왔던 printf 의 (" ")는 상수 이며 그 주소값에서 Read하여 사용하고 있었음을 의미한다. (printf, scanf) (const char *, ...) = ("") 같은 문자열일경우 같은 변수가 다르더라도 같은 주소값을 사용한다. ..
C언어 Chapter 17. 수학 함수 수학함수를 이용하기 위해서 파일을 이용한다. gcc 컴파일의 경우 gcc -o main main.c -lm 으로 컴파일 해야한다. cl 컴파일은 자동으로 파일을 찾아 준다. gcc 컴파일의 라이브러리 함수 위치 /user/lib/ 위치의 libc.a windows 컴파일의 라이브러리 함수 위치 C:\Program Files\Microsoft Visual Studio\VC98\Lib 위치의 LIBCP.LIB 수학 관련 함수 Ex) 수학함수 사용법 결과 난수 생성 함수 rand() rand() 함수는 파일에 명시되어 있다. 0 ~ 32767 사이의 정수를 반환 한다. 보통 인수 값으로 time(NULL) 함수를 이용한다. time() 함수는 1970년 1월 1일로부터 ..