목록프로그래밍 언어/C & C++ (27)
알버트의 개발하는 블로그
이번 시간에는 c언어에서 제공하고 있는 구조체와 구조체의 변수에 대해서 간단히 배워보겠습니다. 구조체란? 우리가 프로그램에서 실제 처리할 데이터는 대부분 하나의 자료형으로 구성되지 않습니다. 여러 가지 자료형으로 자료를 받아야 하는 경우가 많이 있는데요. 구조체란 이처럼 여러 자료형을 받기 위해서 만들어진 하나의 자료형이라고 보시면 됩니다. 즉, 구조체란 여러 자료형을 묶어서 프로그램에서 사용할 새로운 자료형을 만드는 것을 말합니다. 사용자가 정의해서 쓰기 때문에 사용자 정의 자료형이라고도 부릅니다. 구조체를 선언하는 방법은 struct 구조체이름{ 구조체 멤버 변수(필드); ...; }; 이렇게 선언해주시면 하나의 구조체를 만들 수 있습니다. 구조체이름의 첫글자는 보통 대문자로 선언해주는게 관례입니다...
이번 시간에는 C언어에서 많이 쓰이고 있는 포인터에 대해서 배워보겠습니다. 우리가 변수를 선언했을 때, 이 변수는 컴퓨터의 메모리에서 어떤 공간을 차지하게 됩니다. 그리고 이 공간이 어디에 있는지를 알려주는 것이 바로 포인터라고 생각하시면 됩니다. 포인터란? 포인터란 변수나 배열이 메모리에 생성된 주소를 말합니다. 그리고 포인터 변수는 값(상수)을 기억하지 않고 포인터를 기억합니다. 컴파일러에게 포인터 변수임을 알려주기 위해 변수명의 앞에 '*'을 붙여야 합니다. 포인터 변수 선언시 붙여주는 자료형은 포인터 변수에 저장할 변수나 배열의 자료형을 따라서 적어주면 됩니다. 그리고 또 한가지 흥미로운 점은, 선언시 붙여주는 자료형에 상관없이 포인터 변수는 무조건 4바이트의 크기를 가진다는 것입니다. 이제 간단..
이번 시간에는 메모리 동적 할당을 이용해서 이차원 배열을 만들고 출력해보겠습니다. 예전에 메모리 동적 할당을 이용해서 일차원 배열 만들고 출력하기는 해보았는데요. 이번에는 약간 복잡한 이차원 배열입니다. 하지만 막상 코딩해보면 그다지 어렵지는 않습니다. 일차원 배열 동적 할당은 C는 자료형 *배열이름 = (자료형 *)malloc(sizeof(자료형) * 메모리크기) C++에서는 자료형 *배열이름 = new 자료형[메모리크기] 로 사용했었습니다. 이차원 배열은 이 문법이 거의 그대로 사용되지만, *이 하나 더 붙습니다. 코딩과 실행 결과 한번 코딩해보겠습니다. 먼저 c언어 문법입니다. 대표사진 삭제 사진 설명을 입력하세요. c에서는, 자료형 **배열이름 = (자료형 **)malloc(sizeof(자료형) ..
이번 시간에는 좀 간단한 코딩을 해보겠습니다. 자연수를 입력받아서 그 수의 약수를 모두 찾아내고, 그 약수들의 개수를 구해주는 프로그램입니다. 일단 자연수를 입력받기 위한 변수가 필요하겠죠? 그리고 맨 마지막에 약수들의 개수를 출력해주기 위해서 약수들의 개수를 저장해주는 변수가 필요할 것입니다. 따라서 이번 프로그램에서 필요한 변수는 딱 2개면 됩니다. 꽤 간단해 보이죠? 간단하게 코딩해보겠습니다. 코딩과 실행 결과 대표사진 삭제 사진 설명을 입력하세요. 코딩을 해보면 이와 같습니다. 메인 함수의 상단에 먼저 변수를 선언해줍니다. N은 자연수를 입력받기 위한 변수이고, count는 말그대로 약수의 개수를 세기 위한 변수입니다. 그리고 scanf를 통해서 n의 값을 입력받아 줍니다. 그리고 나서 for문만..
이번 시간에는 이차원 배열에 대해서 한번 배워보도록 하겠습니다. 예전에 배열에 대해서 간단하게 알려드렸었는데 그 배열은 우리가 일반적으로 많이 쓰는 일차원 배열이였습니다. 그리고 이번에는 이차원 배열에 대해서 한번 알아보겠습니다. 이차원배열이란? 이차원배열이란, 일차원 배열들이 모인 집합입니다. 예를 들어볼까요? 많은 사람들이 함께 사는 아파트를 예로 들어보면, 각각의 호수가 변수가 됩니다. 그리고 이 호수들이 함께 사는 아파트 한동이 바로 일차원 배열이 되는 것입니다. 그리고 아파트들이 모인 한단지가 이차원 배열이 되는 것입니다. 5개의 원소들을 갖는 4개의 배열이 모여있다고 생각해보면, 총 20개의 변수를 저장할 수 있게 됩니다. 이차원배열 예제 이제 바로 간단한 프로그래밍을 해보도록 하겠습니다. 이..
이번 시간에는 랜덤 난수를 이용하여 주사위를 10000번 돌렸을 때 나오는 눈의 개수를 세어 주는 프로그램을 짜보겠습니다. 랜덤 난수라는 것은, 컴퓨터가 하나의 seed 를 뽑고 그 안에서 랜덤으로 수를 뽑는 것입니다. 주로 프로그래밍 상에서 확률적인 어떤 처리를 해야할 때 많이 사용되는 기법입니다. 랜덤 난수를 쓰기 위해선 srand와 rand함수가 함께 쓰입니다.. 그리고 srand의 인수를 설정해주기 위해서 time(NULL)이란 값이 필요한데, 이 함수를 쓰기 위해서 time.h 헤더파일을 포함시켜주어야 합니다. 코딩과 실행 결과 대표사진 삭제 사진 설명을 입력하세요. 이처럼 코딩해주시면 됩니다. 먼저 소스파일의 헤더부분쪽에 #include 를 써서 타임함수를 포함시켜주어야 합니다. srand(t..
이번 시간에는 메모리 동적 할당에 대해서 배워보겠습니다. 메모리 동적할당이란? 메모리는 우리가 사용하는 PC에서 쓰고 있는 저장 공간이라고 생각하시면 되는데요. 프로그래밍 상에서 우리가 자료를 저장할 때 이 자료들이 저장되어 지는 공간이 바로 메모리입니다. 우리가 변수를 선언하고 그 안에 값을 저장하면 그 값만큼 메모리가 할당되어지는데요. 메모리 동적할당이란 것은 이 메모리를 우리가 동적으로, 원하는 만큼 할당하여 사용할 수 있다는 것입니다. 그래서 메모리 동적할당은 주료 배열에서 많이 쓰입니다. 배열의 크기를 우리가 원하는 만큼 할당하고 싶을 때 사용하게 됩니다. 메모리 동적할당 예제 우선 비쥬얼 스튜디오에서 빈 프로젝트를 만드시고 소스파일을 만드셔서 이 코드를 적어보겠습니다. 대표사진 삭제 사진 설명..
이번 시간에는 C에서 제공하고 있는 아주 유용한 기능인 사용자 정의 함수에 대해서 배워보겠습니다. 프로그래밍은 함수를 사용하여 코딩이 진행되어집니다. C언어는 비쥬얼 스튜디오에서 메인'함수'를 통해서 코딩이 진행됩니다. 그리고 C나 C++이 제공하는 수많은 함수들이 많이 있습니다. 그리고 이런 함수를 잘 알고 사용하는 것은 프로그래밍에 큰 도움이 됩니다. 하지만, 우리 사용자들도 함수를 자기 입맛에 맞춰서 만들고 쓸 수 있답니다. 그것을 사용자 정의 함수라고 하는데요. 오늘은 간략하게 개념과 쓰는 방법만 배워보겠습니다. 사용자 정의 함수 쓰는 법 일단, 사용자 정의 함수의 형식은 이렇게 됩니다. 리턴타입 함수명 (매개변수, 매개변수, ....) 이렇게 되는데요. 리턴타입은 이 함수가 반환할 값을 무슨 타..