jo식이야기
본문 바로가기
반응형

전체 글76

1주차 객체프로그래밍 C++(랜덤한 수 출력) 6 저번 시간에 이스케이프 시퀀스에 대해서 설명을 했습니다. 이번시간에는 랜덤함수에 대해서 배워 보겠습니다. C++을 하면서 랜덤을 쓰는 일은 상당히 많습니다. 이러한 랜덤함수를 이용하려면 라이브러리 2개를 가지고 와야 합니다. 첫 번째 라이브러리는 cstdlib로, #include 를 쓰면 rand(), srand()라는 내장 함수를 사용할 수 있습니다. 두 번째 라이브러리는 ctime으로 #include 를 쓰면 time()라는 내장 함수를 사용할 수 있습니다. 이 time()은 랜덤 한 수 출력을 위해 현재시간을 사용하므로 현재시간을 이용할 수 있게 도와주는 함수입니다. 이제 이 라이브러리 두 개를 활용해서 랜덤한 수들을 출력해 보겠습니다. 그런데 만약 ctime 라이브러리 없이 난수(랜덤 한 수)를 .. 2024. 3. 6.
객체프로그래밍 1주차 C++ (Escape sequence) 5 저번 시간에는 연산자에 대해서 배웠습니다. 이번 시간에는 escape sequence에 대해서 배워보려고 합니다. 이스케이프 시퀀스는 백슬러시(\) 뒤에 한 문자나 숫자 조합이 오는 문자 조합을 이스케이프 시퀀스라고 합니다. 이스케이프 시퀀스를 언제쓰냐면 줄 바꿈 문자, 작은 따옴표, 특정 문자들을 나타내려면 이스케이프 시퀀스를 사용합니다. 이스케이프 시퀀스는 단일 문자로 간주됩니다. https://learn.microsoft.com/ko-kr/cpp/c-language/escape-sequences?view=msvc-170 이스케이프 시퀀스 자세한 정보: 이스케이프 시퀀스 learn.microsoft.com 자세한 것은 여기서 보면 됩니다. 그리고 이스케이프 시퀀스를 자주 쓰는 문제 하나만 추천해드리겠.. 2024. 3. 6.
객체프로그래밍 1주차 C++(연산자) 4 이번시간에는 연산자에 대해서 알아보려고 합니다. 앞시간에 =이 할당연산자라고 배웠습니다. 그러나 당연히 이 밖에도 여러 연산자가 많습니다. 일반적으로 우리가 연산을 할 때 어떤 연산자를 많이 쓰나요? 덧셈, 뺄셈, 곱셈 이런것을 많이 씁니다. C++에서도 이 같은 연산을 할 수 있습니다. 1. 산술 연산자 곱하기는 *, 더하기는 +, 빼기는 -, 나누기는 /, 나머지 연산은 %입니다. %같은 경우는 자기가 나눈 값에서 나머지 부분을 출력해줍니다. 그리고 C++에서는 1씩 증가하거나 감소하거나, 증가하는 것을 표현할 때 ++ 또는 --로 나타냅니다. 그런데 ++또는 --를 앞에 붙이냐 뒤에 붙이냐에 따라 전위, 후위라고 부릅니다. 그렇다면 두 개의 차이점이 무엇일까 a의 값은 연산이 다 끝난 후에는 전위냐.. 2024. 3. 6.
객체 프로그래밍 C++(포인터를 이용한 배열2) 저번 시간에는 배열을 포인터를 이용해서 설명을 했습니다. https://hanglestocks.tistory.com/64 이번 시간에는 저번 시간에 배운 내용에서 조금 더 추가해서 말해보겠습니다. 정수나 실수 또는 문자만 배열을 사용하여 나타낼 수 있는 것이 아닙니다. 포인터 변수형을 사용하여 배열로 나타낼 수도 있다. 이 때는 배열안에 주소 값들이 저장되게 됩니다. 이 포인터 배열은 문자열을 처리할 때 자주 사용합니다. 문자형 배열과 메모리 사용 효율에서 차이가 나기 때문입니다. 예를 들어 문자형으로 배열을 사용하게 된다면 가장 긴 단어에 맞춰서 배열을 설정해주어야합니다. char Name[3][6]={"jinwoo","minsu"."mandu"} jinwoo가 6글자니까 이런식으로 이차원 배열을 통해.. 2024. 3. 6.
객체 프로그래밍 C++(포인터를 이용한 배열1) 저번시간에는 포인터를 활용해서 스왑함수를 만드는 것까지 했습니다. 이번 시간에는 포인터를 활용해서 배열을 어떻게 나타내는지에 대해서 설명해보려고 합니다. 배열의 각 요소는 주소를 가집니다!! 예를 들어서 int의 경우에는 a[0]과 a[1]은 4바이트씩만큼 차이나게 됩니다. double같은 경우에는 8바이트씩 차이나겠죠. 그리고 배열의 이름은 주소입니다. 예를 들어 Name[5[의 배열을 선언했다고 하자. 그러면 Name은 &Name[0]과 같습니다. 즉 그냥 Name만 쓰게 되면 Name 배열의 시작 주소를 가리키게 되는 것입니다. 위의 그림 1을 보면 제대로 이해되었을 것입니다. 좀 응용해보자면 Name이 주소값이기 때문에 Name을 역참조를 하게 되면 Name[0]의 값이 나오게 됩니다. 그리고 +.. 2024. 3. 6.
객체 프로그래밍 C++(포인터를 활용한 스왑) 이번시간에는 포인터를 활용해서 변수의 값을 서로 바꿔주는 과정을 하려고 합니다. 일반적으로 포인터 없이 스왑을 한다면 temp를 이용해서 스왑을 하게 됩니다. 포인터를 사용하지 않은 코드는 다음과 같이 짤 수 있습니다. 그러나 만약 함수를 사용하게 된다면 문제가 발생합니다. 1주차에 배웠던 지역변수라는 개념 때문에 원하는 대로 스왑이 되지 않게 됩니다. 함수 안의 지역변수인 a, b는 함수 밖에 있는 num1과 num2에 영향을 주지 못하고 메모리를 반환하게 됩니다. 그렇게 되면 스왑을 제대로 할 수 없습니다. 만약 이 때 포인터를 써주게 된다면 이러한 문제를 해결 할 수 있습니다. 이처럼 num1과 num2의 주소값을 스왑함수에 넘겨주고, 역참조를 통해서 스왑스키면 원하는 대로 숫자를 서로 스왑할 수 .. 2024. 3. 6.
반응형