1) 3-way-handshake

TCP 통신 과정 중 하나로, 크게 3가지 과정으로 나뉜다.

SYN -> SYN+ACK -> ACK

 

1-1) SYN이란?

클라이언트는 서버로 통신하겠다는 신호로 SYN를 보냄

 

1-2) SYN+ACK란?

서버로 통신 후 그에 대한 응답으로 SYN+ACK를 보냄

 

1-3) ACK란?

클라이언트는 서버로부터 받은 패킷에 대한 응답으로 ACK를 보냄

 

 

얕은 복사

  • 주소를 복사하는 것을 말함. 즉 데이터 값을 복사하는 것이 아니라, 포인터를 이용하여 가리키게 함

얕은 복사의 단점

포인터를 가리키는 것을 바꾸면 복사한 값들도 바뀌게 됨

 

 

깊은 복사

  • 따로 독자적인 메모리를 만들어서, 거기에 복사를 해야 함. 

 

'C' 카테고리의 다른 글

[C언어] 음수의 변환 과정  (0) 2022.03.06
[C언어] 문자열 초기화 방법  (0) 2022.02.25
[C언어] #include 2가지 방식  (0) 2022.02.21
[C언어] size_t vs unsigned int  (0) 2022.02.21
[C언어] C 빌드과정  (0) 2022.02.21

include 방식은 2가지

 

1. #include <>

  • <>으로 들어가는 것은 C언어가 제공하는 라이브러리
  • 대표적인 것으로 #include <stdio.h>

2. #include ""

  • 직접 경로를 통해서 헤더파일을 추가할 때 사용
  • 예시)
    • user_lib란 폴더에 main.c가 있고, my_lib.h라는 파일이 있을 때, main.c에서 #include "my_lib.h" 맨 위쪽에 입력 후 사용 

'C' 카테고리의 다른 글

[C언어] 음수의 변환 과정  (0) 2022.03.06
[C언어] 문자열 초기화 방법  (0) 2022.02.25
[C언어] 얕은 복사 vs 깊은 복사  (0) 2022.02.24
[C언어] size_t vs unsigned int  (0) 2022.02.21
[C언어] C 빌드과정  (0) 2022.02.21
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
singed int : –2,147,483,648 ~ 2,147,483,647

 

2) 그렇다면 size_t는 무엇인가?

size_t는 부호없는 정수이나, 실제 데이터 아니다.

_t는 typedef를 나타내며, 플랫폼에 따라 다른 자료형을 쓰기위해 size_t를 typedef한 것이다.

 

32비트 운영체제에서는 '부호없는 32비트 정수'

64비트 운영체제에서는 '부호없는 64비트 정수'

라고 해석하면 된다.

 

3) 요약

  • size_t는 운영체제가 32비트면 항상 부호없는 32비트이고, 만약 운영체제가 64비트면 부호없는 64비트 정수
  • unsigned int or int의 경우에는 운영체제가 32비트이여도 항상 32비트가 정수아닐 수 있으며, 64비트도 마찬가지

'C' 카테고리의 다른 글

[C언어] 음수의 변환 과정  (0) 2022.03.06
[C언어] 문자열 초기화 방법  (0) 2022.02.25
[C언어] 얕은 복사 vs 깊은 복사  (0) 2022.02.24
[C언어] #include 2가지 방식  (0) 2022.02.21
[C언어] C 빌드과정  (0) 2022.02.21

값에 의한 전달 vs 참조에 의한 전달

 

1-1) 값에 의한 전달이란?

  • Call by value라고 부름
  • 값에 의한 전달은 원본이 바뀌지 않고, 사본이 바뀜
  • int, char, float 기본 자료형들은 값에 의한 전달
  • C언어의 구조체도 기본적으로 값에 의한 전달을 함

1-2) 참조에 의한 전달이란?

  • Call by reference라고 부름
  • 사본이 아닌 원본이 바뀜
  • 쉽게 요약해서, new로 만든 것은 모든 게 call by reference

C언어의 4가지 단계의 빌드과정

 

1. 전처리 단계

  • 복붙과정
  • 헤더파일의 함수를 복사 붙여 넣기 해줌

2. 컴파일 단계

  • 트렌스레이션 유닛(코드)들을 어셈블리어 코드로 변환해줌

3. 어셈블 단계

  • 기계어로 바꿔줌

4. 링크 단계

  • 구멍을 메꿔준다.
  • 점프하는 코드를 넣어줌

 

'C' 카테고리의 다른 글

[C언어] 음수의 변환 과정  (0) 2022.03.06
[C언어] 문자열 초기화 방법  (0) 2022.02.25
[C언어] 얕은 복사 vs 깊은 복사  (0) 2022.02.24
[C언어] #include 2가지 방식  (0) 2022.02.21
[C언어] size_t vs unsigned int  (0) 2022.02.21

https://www.acmicpc.net/problem/2588

 

2588번: 곱셈

첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.

www.acmicpc.net

#include <stdio.h>

int main(void) {
	int num1;
	int num2;

	int result1;
	int result2;
	int result3;

	int total;

	scanf("%d", &num1);
	scanf("%d", &num2);

	result1 = num1 * (num2 % 10);
	result2 = num1 * (num2 % 100 / 10);
	result3 = num1 * (num2 / 100);

	total = result1 + (result2 * 10) + (result3 * 100);

	printf("%d\n", result1);
	printf("%d\n", result2);
	printf("%d\n", result3);
	printf("%d\n", total);

	return 0;
}

URL : https://www.acmicpc.net/problem/1964

 

1964번: 오각형, 오각형, 오각형…

첫째 줄에 N(1 ≤ N ≤ 10,000,000)이 주어진다.

www.acmicpc.net

return 타입을 int로해서 틀린문제..

long타입으로 변경 후 정답

using System;

namespace baek1964
{
    class Program
    {
        static long GetDotTotal(int N, int index)
        {
            if (N == 1)
            {
                return 5;
            }

            else if (index == 1)
            {
                return 5 + GetDotTotal(N, index + 1);
            }

            else if (index == N)
            {
                return index * 3 + 1;
            }

            return index * 3 + 1 + GetDotTotal(N, index + 1);
        }
        static void Main(string[] args)
        {
            int N = int.Parse(Console.ReadLine());
            Console.WriteLine(GetDotTotal(N, 1) % 45678);
        }
    }
}

+ Recent posts