[Daily Post] 230130
[Daily Post]는 매일매일 탐구한 내용을 간략하게 기록하는 포스트입니다.
따라서 정리되지 않은 내용과 추측을 포함하고 있을 수 있습니다.
더 체계적인 형식을 갖춘 글은 해당 카테고리의 포스트를 확인해주세요 :)
Daily Study
C 배열의 이해
- int형 배열을 선언한다는 것 = int형 변수들을 원하는 갯수만큼 나란히 선언한다는 것
- 새로운 C 표준에서는 원하는 변수의 갯수를 다른 변수로도 지정할 수 있다.
- 하지만 범용적인 컴파일을 위해서 가급적 상수를 통해 변수의 갯수를 지정하는 것이 좋다.
- char형 배열을 선언할 때는 특수문자 \0이 들어가는 공간까지 고려해서 메모리 공간을 할당해야 한다.
- scanf 함수 호출문을 구성할 때, 데이터를 저장할 변수의 이름 앞에는 & 연산자를 붙인다.
- 단, 문자열을 입력 받는 경우 배열 앞에 &를 붙이지 않는다.
- 문자열 != 문자 배열 –> NULL 문자의 존재 여부에 따라 다르다
- 문자열: %s으로 한 번에 받는 경우. 자동으로 문자열의 끝에 NULL 문자가 저장된다.
- 문자 배열: %c로 나눠서 받는 경우. NULL 문자를 명시적으로 받지 않게 된다.
- 문자열은 시작과 끝을 항상 명시할 것! 시작은 arr_name[0]으로, 끝은 \0으로!
C 포인터
포인터의 이해
- 포인터 변수란 메모리의 주소 값을 저장하기 위한 변수이다
- int, char, double과 같은 변수 ‘자료형’이 있듯, 포인터에도 포인터 형이 있다.
- int, char, double*이 그 예이다.
C malloc 이중배열
- PS를 위해 이중배열을 동적할당 해야 할 때가 있다.
- 정수값을 저장하는 N*M 크기의 배열을 동적할당하는 구문은 다음과 같이 작성할 수 있다.
#include <stdio.h>
#include <stdlib.h>
int main(){
int N, M, i;
scanf("%d %d", &N, &M); //사용자로부터 N과 M을 각각 입력 받는다
int** arr;
arr = (int**)malloc(sizeof(int*)*N);
for(i=0; i<N; i++){
arr[i] = (int*)malloc(sizeof(int)*M);
}
return 0;
}
- int**부터 코드의 뜻을 찬찬히 살펴보면 다음과 같다.
int** arr:
짤막한 일기
- PS, CS, 졸업논문을 다 공부하려니까 걱정이 앞서지만, 차근차근 공부량을 늘려가는 것을 목표로 하자!
- ~ 0205: DS, ALG 학교 강의를 1회독