호박고구마
[C언어] strncpy() 문자열 복사 함수
C 2022. 3. 6. 22:54

strncpy() 란? string n개를 copy 하는 함수 strcpy() 보다 안전한 함수 1) 함수 원형 char* strncpy(char* destination, const* source, size_t count); 최대 count만큼 soruce를 destination에 복사한다. 널 문자를 먼저 만나면 그전에 끝냄 1-1) source가 count보다 짧으면 남은걸 다 '\0'으로 채워줌 1-2) source가 count보다 길다면 count만큼 복사함 널 문자를 못붙여서 안 붙여줌 이럴 경우 맨 마지막에 '\0'을 넣어줘야 함. 2) 예제 2-1) destination배열의 개수가 3개이고, source배열의 개수가 5개인데, 5개를 복사하면 어떻게 될까? 결과적으로는 2개를 복사가 된다...

[C언어] 음수의 변환 과정
C 2022. 3. 6. 22:40

1) 음수는 어떻게 변환 될까? 1-1) 음수의 변환 과정 음수의 값을 절대값으로 바꿔준다. 절대값을 바꾼 값을, 2진수로 변환한다. 2진수로 변환한 값을 0과 1을 바꿔준다. (1의 보수) 1의 보수를 구한 후 다시 1을 더해서 2의 보수로 만든다.

[C언어] 문자열 초기화 방법
C 2022. 2. 25. 22:29

문자열 초기화 방법에는 2가지 방법이 존재 첫번째 방법 char* name = “hello”; 두번째 방법 char name[] = “hello”; 2가지 방법의 차이는 무엇인가? 1의경우 name변수에는 데이터섹션에있는 hello의 시작주소(포인터)를 저장을 함 2의경우는 데이터섹션에 있는 hi를 스택메모리로 복사해옴, 스택메모리에있는 hello의 시작주소(포인터)를 저장 따라서 1의경우는 데이터섹션에있는 원본의값을 의도치 않게 덮어 쓸 위험이 있음

[C언어] 얕은 복사 vs 깊은 복사
C 2022. 2. 24. 23:08

얕은 복사 주소를 복사하는 것을 말함. 즉 데이터 값을 복사하는 것이 아니라, 포인터를 이용하여 가리키게 함 얕은 복사의 단점 포인터를 가리키는 것을 바꾸면 복사한 값들도 바뀌게 됨 깊은 복사 따로 독자적인 메모리를 만들어서, 거기에 복사를 해야 함.

[C언어] #include 2가지 방식
C 2022. 2. 21. 23:33

include 방식은 2가지 1. #include 으로 들어가는 것은 C언어가 제공하는 라이브러리 대표적인 것으로 #include 2. #include "" 직접 경로를 통해서 헤더파일을 추가할 때 사용 예시) user_lib란 폴더에 main.c가 있고, my_lib.h라는 파일이 있을 때, main.c에서 #include "my_lib.h" 맨 위쪽에 입력 후 사용

[C언어] size_t vs unsigned int
C 2022. 2. 21. 22:38

int main(void) { size_t i; for(i = 0; i < 10 ; i++) { printf("Hello world\n"); } } C언어를 공부하다 보면, 위처럼 size_t를 많이 보게 된다. size_t를 여러가지 용도로 사용하는데, for문 안에 있는 인덱스를 표현하는 부분에도 많이 사용된다. 그렇다면 본론을 말하겠다. size_t 와 unsinged int의 차이는 무엇인가라고 말하면, 일단 unsigned의 개념이 뭔지 알아야한다. 1) unsigned int란 ? 부호 없는 정수를 말한다. 즉, - +가 없는 정수라는 것 (항상 양수) 1-1) singed int vs unsigned int 범위 비교 (참고) unsinged int : 0 ~ 4,294,967,295 sin..

[C언어] C 빌드과정
C 2022. 2. 21. 22:12

C언어의 4가지 단계의 빌드과정 1. 전처리 단계 복붙과정 헤더파일의 함수를 복사 붙여 넣기 해줌 2. 컴파일 단계 트렌스레이션 유닛(코드)들을 어셈블리어 코드로 변환해줌 3. 어셈블 단계 기계어로 바꿔줌 4. 링크 단계 구멍을 메꿔준다. 점프하는 코드를 넣어줌