반응형

C++에서만 쓰이는 연산자가 있다고 한다.

한번 알아보도록 하자

범위 지정 연산자 (scope resolution operator)

가장 우선순위가 높은 연산자이다.

범위지정 연산자 (::)는 여러 범위에서 사용된 식별자(identifier)을 식별하고 구분하는 데 사용하는 연산자이다.

이러한 식별자로는 변수, 함수, 열거체 등이 올수 있다.

 

범위지정연산자를 변수 이름 앞에 붙이면 해당 변수는 전역으로 사용하라는 의미가 된다.

클래스에 사용하면 네임스페이스멤버를 식별하거나, 클래스의 정적 멤버를 호출할 수 있다.

<문법>

1. ::식별자

2. 클래스이름::식별자

3. 네임스페이스::식별자

4. 열거체::식별자

멤버 포인터 연산자 (pointer-to-member operator)

멤버포인터 연산자를 사용하여 클래스의 멤버를 가리키는 포인터를 정의할 수 있다.

두 가지 형태가 존재.

1. 왼쪽의 피연산자가 클래스타입의 객체인 경우

2. 왼쪽의 피연산자가 클래스 타입의 객체를 가리키는 포인터인 경우

<문법>

1. 클래스타입의객체.*멤버이름

2. 클래스타입객체의포인터->*멤버이름

typeid 연산자

typeid 연산자를 사용하여 객체의 타입에 관한 정보를 확인할 수 있다.

typeid 연산자는 런타임에 객체의 타입을 결정하는 데 사용합니다.

또한, 템플릿에서 템플릿 매개변수의 타입을 결정할 때도 사용합니다.

<문법>

typeid(표현식)

반응형

'CS > C++' 카테고리의 다른 글

C++ 공부 스타 - 또  (0) 2023.07.18
반응형

컴퓨터에서 실수를 2진수로 표현할텐데, 이건 저장을 할 때 어떻게 저장을 하는지 갑자기 궁금해졌다.

한번 알아보도록 하자.

고정소수점 방식(fixed point)

실수는 정수부와 소수부로 나눌 수 있다.

고정소수점 방식은 소수부의 자릿수를 미리 정하여, 고정된 자릿수의 소수부를 표현하는 방식으로 생각하면 된다.

32비트 실수를 고정소수점 방식으로 표현하면

요렇게 된다.

하지만 이 방식은 정수부와 소수부의 자릿수가 한계가 있어, 표현할 수 있는 범위가 적다.

부동소수점 방식(floating point)

실수는 정수부, 소수부로 나눌수도 있지만

가수부와 지수부로 나누어 표현할 수도 있다. 부동소수점 방식에서는 이렇게 나누어 표현한다.

대부분의 시스템에서 이런 방식을 채택하고 있다.

C++에서는 요렇게.

 대부분 IEEE 표준을 따른다.

32비트 float형
64비트 double형

more

부동소수점 방식은 고정소수점 방식보다 훨씬 많은 범위까지 표현할 수 있긴 하지만 항상 오차가 존재한다는 단점을 가지고 있다.

위의 공식을 사용해서 표현하면, 표현 범위는 늘어나지만, 10진수를 정확하게 표현할 수 없으므로 오차가 발생할 수 있게 된다.

 

 

반응형
반응형

평범한 일상을 보내다가 오랜만에 백준 문제를 풀러 갔는데 왠지 C언어가 비효율적?으로 길게 코딩을 늘여쓴다는 느낌을 받았다. 그래서 갑자기 C++을 공부하고 싶어졌다. ㅋㅋㅋ

 

C++ 개요

C++

기존 C언어에 여러 기능이 추가된 프로그래밍 언어.

C언어에서 절차지향적 특징을 가져오고, 클래스를 사용하는 등의 객체지향적 언어이며, 템플릿으로 대변되는 일반화 프로그래밍 방식의 언어이기도 하다.

C를 기초삼아 만든 언어이므로, 기존 C표준 라이브러리를 그대로 사용할 수 있다.

하지만 C++을 하기 위해서는 기존 절차지향적 프로그래밍의 습관에서 벗어날 필요가 있다.

특징

1. 절차지향적 & 구조적 프로그래밍 언어

2. 객체 지향 프로그래밍 언어

3. 일반화 프로그래밍 언어

작동 과정

소스코드 작성

전처리

컴파일러에 의한 컴파일

링커에 의한 링크

실행파일 생성

 

컴파일 하는 방법(리눅스)

g++ [소스코드.cpp]

하면 오브젝트파일 생성됨.

 

반응형

'CS > C++' 카테고리의 다른 글

C++ 공부하기 | C++연산자  (0) 2023.07.19
반응형

문자 개수 세기 count

>>>a = "hyoyoung"

>>>a.count('y')

2

 

위치 알려주기1 find

>>>a = "hyoyoung is korean"

>>>a.count('y')

1(처음으로 나온 곳)

만약 없는 문자 검색하면 -1 출력

 

위치알려주기2 index

>>>a.index('y') 

1

근데 얘는 없는 문자 검색할 때 에러뜸

 

문자열 삽입 join

>>> ",".join('abcd')

'a,b,c,d'

>>>",".join(['a','b','c','d'])

'a,b,c,d'

 

소문자 -> 대문자 upper

>>> a = "hi"

>>>a.upper()

'HI'

 

대문자 -> 소문자 lower

>>>a = "HI"

>>>a.lower()

'hi'

 

공백지우기

왼쪽 lstrip

>>>a = " hi "

>>>a.lstrip()

'hi '

오른쪽 rstrip

' hi'

양쪽 strip

'hi'

 

문자열 바꾸기 replace

>>>a = "Life is too short"

>>>a.replace("Life", "your leg")

'your leg is too short'

 

문자열 나누기 split

>>>a = "Life is too short"

>>>a.split()

['life', 'is', 'too', 'short']

>>>b = "a:b:c:d"

>>>b.split(:)

['a', 'b', 'c', 'd']

 

리스트에 요소 추가 append

>>> a = [1,2,3]

>>> a.append(4)

>>> a

[1,2,3,4]

 

리스트 정렬 sort

>>> a = [1,3,2,4]

>>> a.sort()

>>> a

[1,2,3,4]

알파벳도 순서대로 정렬할 수 있다

 

리스트 뒤집기 reverse

>>> a = ['a', 'c', 'b']

>>> a.reverse()

>>> a

['b','c','a']

 

위치 반환 index

>>>a = [1,2,3] 

>>>a.index(3)

2

>>>a.index(1)

0

 

리스트에 요소 삽입 insert

>>> a = [1,2,3] 

>>> a.insert(0,4)     #a[0]위치에 4 삽입

[4,1,2,3]

 

리스트 요소 제거 remove

>>> a = [1,2,3,1,2,3,]

>>> a.remove(3)

[1,2,1,2,3]

가장 처음 나오는 3을 제거

 

리스트 요소 끄집어내기 pop

>>> a = [1,2,3]

>>> a.pop()

3

>>> a

[1,2]

가장 마지막 요소를 돌려주고 그 요소를 삭제

>>> a.pop(1)

2

>>> a

[1]

 

리스트에 포함된 요소 x의 개수 세기 (count)

>>> a = [1,2,3,1]

>>> a.count(1)

2

 

리스트 확장 extend

extend(X)에서 X에는 리스트만 올 수 있으며, 원래의 리스트에 X리스트를 더하게 됨

>>>a = [1,2,3]

>>>a.extend([4,5])

>>>a

[1,2,3,4,5]

>>> b = [6,7]

>>> a.extend(b) 

>>> a

[1,2,3,4,5,6,7]

-> a.extend([4,5]) 는 a += [4,5]와 동일하다.

 

반응형
반응형

1. call-by-value vs call-by-reference

1-1. call-by-value

call-by-value는 함수를 호출할 때 단순히 값을 전달하는 형태의 함수호출. 

예를 들어)

f(a)와 같이 a라는 값을 그대로 전달해주는 함수호출을 말함.

 

1-2. call-by-reference

call-by-reference는 메모리의 접근에 사용되는 주소값을 전달하는 형태의 함수호출.

예를 들어)

f(&a)와 같이 a라는 값의 주소값을 전달해주는 함수 호출을 말함.

 

1-3. 둘의 차이점

그냥 간단하게 정리하면 

call-by-value를 통해서는 메인함수에서 선언된 배열이나 변수 등을 바꿀 수 없는데,

call-by-reference를 통해서는 메모리에 접근함으로서 메인함수에서 선언된 변수를 건드릴 수 있다!

반응형
반응형

42서울 온라인 테스트 후기!!

시험기간에 딴짓하는게 제일 집중이 잘되는지라 42서울 테스트를 한번 봤음 ㅋ

사실 혼자한건 아니고 옆에있던 동기 한명이랑 같이 하긴 했는데 이게 뤼얼 집단지성의 힘이라는걸 깨달았음

일단 맨처음 혼자 했을때는 기억력테스트 15단계, 논리력테스트 17단계까지 갔고 

한 10시간 뒤? 그쯤 합격 통보 메일 와서 합격 후 어제 체크인미팅 광클까지 성공해서 이제 라피신 신청만 남은 상황.

그리고 도전 욕구 생겨서 가계정 판다음 동기 한명이랑 뤼얼 개빡세게 풀어본 결과.. 20단계까지 갔습니당 ㅎㅎㅎ 

20단계를 자기 눈으로 직접 본 사람이 얼마나 될지..? ㅎㅎㅎ

 

8월 22일날 봅셰댜 여러분~ ㅋㅋㅎㅎ

 

1. 기억력테스트

기억력테스트는 뭐 그냥 화면에 나오는거 열심히 기억하면 되는건디

  색칠  
     
     

     
    색칠
     

     
     
색칠    

 

대충 이렇게 순서대로 색칠된 타일의 위치가 바뀌는데 이 순서를 기억하고있다가 이 다음에 나오는 비어있는 시트에 순서에 맞게 클릭클릭하면 클리어.

단계가 올라갈수록 단계당 색칠되는 타일의 개수가 바뀌거나 전체 타일의 개수(3곱3 -> 4곱4)가 늘어나면서 점점 어려워짐.  내가 못풀은 15단계가 아마 5곱5 배경에 바뀌는 횟수가 9번이었나?(8번일수도) 그정도 돼서 쫌 까다롭긴 했음요 ㅋㅋ 

 

2. 논리력테스트 

이 논리력테스트 이놈이 진짜 야무진놈인데 2시간동안 계속 풀어도 집중력이 안끊기는 체험을 할 수가 있어요 ㅋㅋㅋㅎ

규칙은 뭐 필드 안에 있는 별표를 전부 다 먹으면 되는데, 그 별표를 먹기 위해서 예전에 어렸을 때 하던 Scratch 하는것마냥 블록들 조합해서 코딩 비슷한거 하면 됩니다.

뭐 저는 요즘 C언어 공부하고 있으니까 C언어 가지고 설명을 좀 드리자면,

대충 이런 식의 블록들이 있다고 칩시다. 그러면 왼쪽 화살표는 왼쪽 턴 명령어, 오른쪽도 같은 개념이고, 위쪽 화살표는 현재 바라보고 있는 방향으로 한 칸 전진을 하는 명령어입니다.

그리고 게임을 진행하다보면  밑에 있는 F0, F1, F2 블록은 C언어로 치면 goto문과 같다고 볼 수 있을 것 같네요. 더 이상 힌트를 주면 스스로 알아내서 깨는 재미가 없을 것 같으니까(사실 글로 설명하기 힘들...) 넘어가보고,

오른쪽에 있는 색깔 블록들은 if문으로 보면 될 것같아요. 내가 있는 필드가 빨간색 필드라면..? A명령 실행. 이런 느낌으로 해보시면 될 것 같습니당~ ㅎㅎ

 

자 이제 이 글을 쓰게 된 목적이라고도 할 수 있지요? 바로 20단계(제 생각에는 test의 엔딩..)의 아름다운 자태나 한번 구경하고 갑시다! ㅋㅋㅋㅋ

 

키야아아아아

이게 바로 (본인 피셜) ecole42 논리력 테스트의 엔딩인데요! 위에 보시면 아시겠지만 이걸 봤을 때는 이미 시간이 5분남짓 남아있어서 클리어에는 실패했습니다... 그런데 이걸 진짜 본인 눈으로 이 단계까지 온 사람이 전국에 몇명이나 될련지 궁금하네요? ㅎㅎㅎ 이거 봤을떄 주변에서 구경하는 친구들도 다같이 소리지르면서.... 하 ... 그날의 감동이 아직까지 남아있습니다... ㅎ

 

그럼 이만 오늘의 글은 마치도록 할게욤 

한 열흘 전에 썼어야 했던 글인데 귀찮아서 미루고 미루다가 시험 끝나고 썼어용 ㅎ ㅎ

 

 

 

 

 

 

 

 

 

반응형

+ Recent posts