C | C++

C | C++

[c\c++] 포인터 & 메모리관점(리눅스)

대학교 1학년 처음 C프로그래밍을 접해봐서 아무것도 모른 채 무작정 코딩하는법, 문법만 주구장창 외운 기억이 있다. 그렇게 공부를 하니 제대로 이해를 못한 채 한학기가 끝나버렸다. 방학때 스스로 공부를 다시 천천히 해보니까 하나 둘씩 원리가 이해되면서 퍼즐이 맞춰지는 기분이 들었다. 복습하는 차원으로 다시 정리를 하고 더 나아가서 컴퓨터 구조인 메모리 관점에서도 확인해 보자. 포인터 포인터란 각자가 표현하는 방식이 다양하게 있지만 나는 '주소를 가리키는 것'이라고 표현하고 싶다. 백문이 불여일견 빠르게 예제를 통해 확인하자 위와 같이 코드를 작성한 후 실행하면 다음과 같은 결과가 나온다. 이런 코드를 구간별로 나눠서 자세히 그림을 통해 분석해보자. 1번 구간 변수 3개를 선언하여 메모리 공간이 할당되었고..

C | C++

[C\C++] 소수 구하기

자연수 1부터 입력한 수 N까지 소수의 개수 출력하기 자연수 1부터 입력한 수 N까지의 소수의 개수를 출력하는 프로그램을 짠다면 다음과 같다.(sol.1) #include int main() { int n = 0,cnt=0,flag; scanf("%d", &n); for (int i = 2; i

C | C++

[C\C++] 1부터 입력한 숫자까지의 자리수 개수 구하기(응용)

이전에 포스팅한 방법은 입력한 숫자를 단순히 나누어서 몫을 계속해서 나누는 방법이였다. 이러한 방법이 코드를 작성하는데 어려움 없이 쓸 수 있지만 숫자가 커지게 되면 연산도 많이 하게 되어 프로그램 시간이 오래 걸리게 된다. 이런 연산을 간소화 하기 위해 다음과 같은 방법을 사용한다. 1 ~ 9 까지의 자연수 : 9개 -> 1자리, 자리수 개수 : 9X1 = 9개 10 ~ 99 까지의 자리수 : 90개 -> 2자리, 자리수 개수 : 90X2 = 180개 100 ~ 999 까지의 자리수 : 900개 -> 3자리, 자리수 개수 : 900X3 = 2700개 if ) 15를 입력했다면 9+(15-9)*2 = 21개 15에서 9를 뺀 후 2를 곱해줘야 두자리수의 총 개수가 나온다. if ) 256을 입력했다면 9..

시그널보내
'C | C++' 카테고리의 글 목록