목록Language/C언어 (6)
내 잡다한 노트
# stdlib.h stdlib.h는 C 표준 라이브러리의 일부로, 프로그램의 메모리 관리, 난수 생성, 문자열 변환, 동적 메모리 할당, 프로그램 종료 등과 같은 일반적인 유틸리티 함수를 포함하고 있습니다. 여기에는 malloc(), free(), realloc()과 같은 동적 메모리 할당 함수, rand()와 srand()와 같은 난수 생성 함수, atoi()와 atof()와 같은 문자열 변환 함수, exit()와 같은 프로그램 종료 함수, 그리고 system()과 같은 명령어 실행 함수가 포함됩니다. 이러한 함수들은 C 프로그래밍에서 자주 사용되며, 특히 메모리 관리와 관련된 함수들은 동적 메모리 할당이 필요한 프로그램에서 필수적으로 사용됩니다. # stdio.h stdio.h는 C언어에서 표준 입..
배열 포인터는 배열의 첫번째 요소를 가리키는 포인터이며, 이걸 사용하면 배열을 간단하고 효율적으로 다룰 수 있다. 다차원 배열을 표현하는데 편하다. 사용하는 이유는 다양하다. 예를 들어, 함수에서 배열을 인수로 전달해야 할 때 포인터를 사용하여 배열을 전달할 수 있다. 또한, 다차원 배열의 경우에는 배열 포인터를 사용하여 배열의 요소에 빠르게 접근할 수 있다. int arr[3][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} }; 이 2차원 배열을... int (*pArr)[4] = arr; 이렇게 선언할 수 있음. pArr은 각 행의 첫번째 원소의 주소값을 가리키다보니 [4]라는 열의 크기만 같이 선언하면 2차원 배열에 다 접근할 수 있게된다.
# memset : memory setting. 즉, 메모리를 (특정 값으로) 세팅한다. 이 함수는 메모리의 내용을 원하는 크기만큼 특정 값으로 세팅할 수 있는 함수이다. 헤더파일은 memory.h 또는 string.h 둘 중 아무거나 void* memset (void* ptr, int value, size_t num) 첫번째 인자 *ptr은 세팅하고자 하는 메모리의 시작 주소. 포인터가 위치하는 자리 두번째 인자 value는 메모리에 세팅하고자 하는 값을 넣는다. 세번째 인자는 길이를 뜻하고 바이트 단위이다. 보통, 길이 * sizeof(데이터타입) 의 형태로 작성. 리턴값은 성공하면 ptr을 반환, 실패하면 null을 반환 ex) 문자 배열 변경, 배열 초기화 주의점) 0과 char 타입이 아닌 값을..
포인터 2) 포인터 변수가 가리키고 있는 변수를 참조하려면 * 를 사용한다. 즉, int *ex = NULL; int data = 100; ex = &data; printf("%d", *ex); 포인터 변수는 간단한 더하기와 뺄셈 연산으로 이웃한 변수의 주소 연산을 수행할 수 있다. 처음 int *pi에 100이라는 주소값이 저장돼있다고 하면 *(pi+1)을 하면 int의 크기가 4이니까 주소값이 104로 연산돼 저장이 된다. 만약 double 포인터 변수로 선언돼있다면 +1을 할 때 주소값은 +8이 되는 것이다. 포인터 변수는 동일한 자료형끼리만 대입이 가능하다. 이중포인터) 포인터 변수의 주소값을 갖는 변수를 이중 포인터라 한다. 즉, 포인터의 포인터인 셈이다. int i = 20; int *pi =..
scanf ( "입력받을 문자의 서식", 변수의 주소); 변수 앞에 &를 붙이게 되면 이는 해당 변수의 주소를 가리키게 된다. 입력할때 일반 변수들에는 &을 붙여서 주소를 보내도록 하고 (call by reference), 배열의 이름과 같이 &를 붙이지 않아도 주소를 가리키는 것들은 &을 떼고 인자로 넣어주면 된다. 그리고 scanf는 #define _CRT_SECURE_NO_WARNINGS 을 상단에 입력해야 보안경고가 안뜬다 그래서 scanf_s를 사용하도록 하자. 정수와 실수를 함께 연산하면 결과값은 실수로 나온다. 왜냐하면 실수가 정수보다 표현 범위가 넓기 때문이다. 즉, 표현 범위가 넓은 쪽으로 자동 변환된다. && = and || = or ! = not stdbool.h 헤더파일을 입력하면 ..
한줄 주석 : // 범위 주석 : /* 주석처리가됩니다ㅏ */ printf("%d %d %d\n", num1, num2, num3); char 1바이트 크기 -128 ~ 127까지의 수를 표현할 수 있다. int 4바이트 크기 char과 int는 %d로 출력하고 long은 출력할 때 %ld, long long은 %lld로 출력한다. 자료형들은 표현할 수 있는 값의 범위가 정해져있다 그걸 회전시킬수있는 원으로 생각하고 각 부분을 값이라고 생각할때 최댓값을 넘어가게되면 오버플로우가 발생해서 자료형이 표현할 수 있는 최솟값으로 시작하게 된다. 이걸 오버플로우라고 한다. 언더플로우는 오버플로우에 반대상황으로 최솟값보다 작아지면 최댓값부터 다시 시작하게 된다. 자료형의 크기를 바이트 단위로 구하는 연산자 size..