전체 글

배우고 성찰한 것을 기록하는 블로그입니다.
C, C++

C언어 코딩도장(메모리 사용하기)

포인터에 원하는 만큼 메모리 공간을 할당받아 사용하는 방법을 알아보자. 메모리는 malloc → 사용 → free 패턴으로 사용한다. 메모리 할당하기 메모리를 사용하려면 malloc 함수로 사용할 메모리 공간을 확보해야 한다. (malloc : memory allocate) 이때 필요한 메모리 크기는 바이트 단위로 지정한다. 메모리 할당, 해제 함수는 stdlib.h 헤더 파일에 선언이 되어있다. #include #include int main() { int num1 = 20; // int형 변수 선언 int* numPtr1; // numPtr1 포인터 변수 선언 numPtr1 = &num1; // num1의 메모리 주소를 numPtr1에 할당 int* numPtr2; // numPtr2 포인터 변수 선..

C, C++

C언어 코딩도장(포인터 사용하기)

int num1 = 10; 위와 같은 변수는 컴퓨터 메모리에 생성된다. 즉 메모리에 일정한 공간을 확보해두고 원하는 값을 저장하거나 가져오는 방식이다. 보통 변수는 num1과 같이 이름으로 사용하지만 메모리의 특정 장소에 있으므로 메모리 주소로도 표현할 수 있다. 일상생활에서 집을 구분할때 주소를 사용하는 것과 같은 원리이다. 변수의 메모리주소를 구할때는 &(num1) 이런식으로 변수 앞에 &(주소 연산자)를 붙여준다. 메모리 주소는 printf에서 서식 지정자 %p를 사용한다. 포인터 변수 선언하기 변수의 메모리 주소를 구했는데 메모리 주소는 어디에 저장해야 할까? C언어에서 메모리 주소는 포인터(pointer) 변수에 저장한다. 포인터 변수는 *를 사용하여 선언한다. (포인터 변수는 줄여서 포인터로 ..

C, C++

[C언어] 약수 구하기

아까는 배수를 구해보았으니 이번에는 약수를 구해보자. #define _CRT_SECURE_NO_WARNINGS #include int main() { int num = 280; for (int i = 1; i

C, C++

[C언어] FizzBuzz / 삼항연산자 중첩

FizzBuzz는 매우 간단한 프로그래밍 문제이며, 규칙은 다음과 같다 1에서 100까지 출력 3의 배수는 Fizz 출력 5의 배수는 Buzz 출력 3과 5의 공배수는 FizzBuzz 출력 즉 컴파일하면 아래와 같은 화면이 나온다. FizzBuzz 첫 트라이 아래는 내가 문제만 보고 짠 코딩이다 #define _CRT_SECURE_NO_WARNINGS #include int main() { for (int i = 1; i

C, C++

C언어 코딩도장(goto 사용하기)

goto는 코딩 중 원하는 부분으로 건너뛰어야하는 상황에서 사용하는 제어문이다. goto는 별다른 제약 조건 없이 원하는 부분으로 이동할 수 있기 때문에 자칫 잘못하면 남발하여 사용할 수 있는데, 그렇게되면 코드가 너무 부해져 가독성이 떨어지게 된다. 하지만 적절히 사용하면 중복되는 코드를 없앨 수 있고, 코드를 좀 더 간결하게 만들 수 있다. goto와 레이블 사용하기 goto는 레이블을 지정해서 사용한다. goto 레이블; 레이블: #define _CRT_SECURE_NO_WARNINGS #include int main() { int num1; scanf("%d", &num1); if (num1 == 1) // num1가 1이라면 goto ONE; // ONE으로 goto else if (num1 =..

C, C++

[C언어] for문 별 찍기 2편

역피라미드, 피라미드, 모래시계형을 만들어볼 것이다. 역피라미드 만들기 Thinking - 공백의 패턴은 어떠한가? : 외부 for문 i가 증가하는 갯수만큼 공백 증가. - 별은 어떻게 나타낼 것인가? : 약간의 그림을 그려보고, 패턴을 찾는다. - 역 피라미드의 경우, 외부 for문 i가 0부터 시작하고, 높이가 h이라는 가정 하에 별의 갯수는 2*h-(2*i+1)이다. 이것을 가지고 코딩을 해보자. 더보기 #define _CRT_SECURE_NO_WARNINGS #include int main() { int h; scanf("%d", &h); for (int i = 0; i

C, C++

[C언어] for문 별 찍기 1편

for문을 중첩해서 사용하면 2차원 평면을 다룰 수 있다. for문 별찍을때 헷갈리지 않으려면 for(초기식; 조건식; 변화식) 이라는것을 꼭 상기하자. 사각형 별 출력하기 #include int main() { for (int i = 0; i < 5; i++) // 세로줄을 담당한다. { for (int j = 0; j < 5; j++) // 내용물을 담당한다. { printf("*"); } printf("\n"); } return 0; } 컴파일한 화면을 보려면 아래 더보기를 눌러주세요. 더보기 외부 for문은 세로 줄을 담당한다. 그리고 내부 for문은 내용물(가로)을 담당한다. 외부 for문이 0부터 4까지 5번을 쭉 내려가는 것으로 짜여져 있으며. 내부 for문은 j가 0부터 4까지 하나씩 차면..

C, C++

C언어 코딩도장(break, continue로 반복문 제어하기)

break와 continue를 잘 이용하면 반복문을 제어할 수 있다. 먼저 break는 for, while, do while, switch 문법에서 제어 흐름을 벗어나기 위해 사용한다. break로 반복문 끝내기 while(do while)뿐만 아니라 for에서도 break의 동작은 같다. 무한루프가 예시이긴 하지만, 반복 횟수가 정해져 있더라도 break를 사용하면 반복문은 바로 끝난다. continue로 코드 실행 건너뛰기 이번에는 continue를 사용하여 일부 코드를 실행하지 않고 건너뛰어보자. 다음은 1부터 100까지 숫자 중 짝수만 출력한다. continue는 루프를 나오지는 않는다. 다만 해당 조건에 부합할 경우 그 조건만 건너뛰고 다시 루프문으로 들어간다. for 뿐만 아니라 while(d..

C, C++

C언어 코딩도장(do while 반복문으로 최소 한번은 실행하기)

코드를 최소 한번은 실행하는 do while에 대해서 공부해보자. do while 반복문은 초기식이 반복문 바깥에 있다. 그리고 do로 시작하여 중괄호 안에 반복할 코드와 변화식이 함께 들어가며 중괄호가 끝나는 부분에 조건식을 지정해준다. do while 반복문 사용하기 do while을 사용하여 Hello world를 100번 출력해보자. do while 반복문도 반드시 {}(중괄호) 안에 변화식을 지정해야 한다. 만약 조건식만 지정하고 중괄호 안에서 변화식을 생략하면 반복이 끝나지않고 계속 실행(무한 루프)되므로 주의해야 한다. do while을 while로만 표현하면 다음과 같다. 초깃값을 1부터 시작하기 초깃값을 감소시키기 입력한 횟수대로 반복하기 반복 횟수가 정해지지 않은 경우 while 반복문..

C, C++

C언어 코딩도장(while 반복문)

while 반복문은 괄호 안에 조건식만 들어가고, 초기식은 반복문 바깥에 있다. 그리고 중괄호 안에 반복할 코드와 변화식이 함께 들어간다. 초기식 While (조건식) // 루프 선언문(loop statement) { 반복할 코드 변화식 } // 루프 본체(loop body) 및 변화식 먼저 초기식부터 시작하여 조건식을 판별한다. 여기서 조건식이 참이면 반복할 코드와 변화식을 함께 수행한다. 그리고 다시 조건식을 판별하여 참이면 루프로, 거짓이면 루프를 탈출하여 다음 코드로 넘어간다. while 반복문 사용하기 while 반복문으로 Hello world를 100번 출력해보자. 1. 먼저 반복문에서 사용할 변수 i를 선언한 뒤 0으로 초기화 한다. 2. while에는 조건식만 지정하면 된다. 3. 여기서 ..

2DC
2DC