Computer Language/C

Computer Language/C

[C] strcasecmp, tolower, toupper

strcasecmp는 C 언어의 문자열 비교 함수로, 대소문자를 구분하지 않고 두 문자열을 비교합니다. 이 함수는 두 문자열이 같으면 0을 반환하고, 첫 번째 문자열이 사전 순으로 두 번째 문자열보다 앞서면 음수를 반환하고, 첫 번째 문자열이 사전 순으로 두 번째 문자열보다 뒤에 있으면 양수를 반환합니다.strcasecmp 함수는 헤더 파일에 정의되어 있으며, 다음과 같이 사용할 수 있습니다.cCopy code#include int result = strcasecmp(const char *s1, const char *s2); 여기서 s1과 s2는 비교할 두 문자열입니다.예를 들어, 두 문자열 "Hello"와 "hello"를 비교하는 경우 다음과 같이 사용할 수 있습니다.cCopy code#include ..

Computer Language/C

[C]동적할당 Dynamic Memory Allocation

C언어의 메모리 동적 할당 malloc으로 할당 할당후 반드시 free로 반환해야 한다. 항상 모든 자원을 활용하지 않아도 되는 카페의 회원등은 동적할당을 하여 해당 맴버의 메모리를 필요한만큼만 할당하여 사용함.

Computer Language/C

[C]void pointer

모든 포인터는 4byte의 크기를 가지므로, void포인터라는 형태가 없는 포인터도 사용이 가능하다. void pointer는 여러가지 자료형에 상관없이 저장이 가능하나, 컴퓨터가 그 자료를 읽어오기 위해서 필요한 데이터의 크기값(int 4byte, char 1byte ...)이 없어서 호출시 해당 자료형을 알려주어야 호출이 가능하다. *(char*)p = 형식으로 표기한다. 호출시 자료형을 지정하지 않으면 불러울 수 없다.

Computer Language/C

[C] 이중포인터

이중포인터는 뭐 어려운 개념이라기보단, 말이 길어지는 개념이다. 누구의 친구의 친구의 친구의 친구 같은 느낌.. 포인터를 또 포인터로 지정해주는 경우가 있는데, 이때는 *을 두개 붙여서 표시해준다. 두번째 포인터 아래처럼 정의해준다. int** p2 = &p; 여기서 나중에 내부 값을 불러올때, *p2 라고 하면 *p2 = 100 (첫단계 주소값) **p2 라고 하면 **p2 = 20 (두번째(위 그림의 경우 마지막)단계의 내부값) 을 지칭한다. 개념이 어렵기보단 건너는 다리가 많아서 헷갈리니, 별이 2~3개 붙어있으면 유심히 보아야한다.

Computer Language/C

[C] 문자배열과 포인터, 포인터배열과 배열포인터.

혹시 틀린 부분이 있으면 지나가지 마시고 댓글로 지적해주시면 감사드리겠습니다. :-) C언어에서는 문자열을 담는 자료형이 없으므로 두가지 방법으로 문자열을 담을 수 있다. 첫번째는 배열을 이용한것, 두번째는 문자열 주소값을 가진 포인터를 이용하는것. 이 그림과 같이 int a[3][5] 라는 2차원 배열이 있고, a의 주소는 200이라고 가정했을때, 이 배열을 가르키는 포인터는 int(*p)[5] = a 가 된다. int*p = a와는 다른데, 이 배열에서 a의 기본 단위는 20바이트가 되므로, a주소값은 200 이라면, a+1 주소값은 204가 아닌 220이 된다. 그러나 int*p = a라고 정의하면, p+1의 주소값은 220이 아닌 204가 되어버려, 1:1 대응이 안되고 다른 의미가 되어버린다...

Computer Language/C

[C]포인터변수 pointer

p는 int *p 형식으로 정의되어 있으므로, int * 형식(메모리주소값.&) 만 들어갈 수 있다. 여기에 p=70과 같이 int값을 넣어버리면 오류가 난다 포인터는 변수다. 자신의 자료형과 일치하는 변수의 주소를 저장한다. (int*p 는 int의 주소만 저장하고, str의 주소는 저장할 수 없다.) 통상적으로 int의 크기는 4byte 이므로 4byte로 가정하고, 주소값은 (편의상 10진법으로) 임의로 &a = 100, &p = 500 으로 설정한 경우, [참고로 여기서 가정한 주소값은 실제로는 저렇게 대입하면 정수와 주소값의 자료형이 다르므로 불가능함. 편의상 주소값을 10진수로 표기] a[2] = *(a+2) &a[2] = a+2 배열식 표현 포인터식 표현 int* p = int *p (별 위..

Computer Language/C

정렬 sort 참고자료 링크

https://gmlwjd9405.github.io/2018/05/08/algorithm-merge-sort.html [알고리즘] 합병 정렬(merge sort)이란 - Heee's Development Blog Step by step goes a long way. gmlwjd9405.github.io https://gmlwjd9405.github.io/2018/05/06/algorithm-selection-sort.html [알고리즘] 선택 정렬(selection sort)이란 - Heee's Development Blog Step by step goes a long way. gmlwjd9405.github.io 버블 정렬(bubble sort) [알고리즘] 버블 정렬(bubble sort)이란 - H..

kthdev
'Computer Language/C' 카테고리의 글 목록