본문 바로가기

분류 전체보기58

C언어 공부하기 - 배열과 포인터 지난 시간에 포인터의 개념에 대해 간단히 살펴 보았습니다. 살짝 정리해 보면,, 포인터는 메모리의 주소를 저장하는 변수입니다. C언어에서 포인터를 선언할 때는 일반 변수를 선언하듯이 하면 되는데 변수 앞에 기호 Asterisk 즉 "*"를 붙여 주면 되고, 기본 자료형(문자형, 정수형, 실수형 등)의 주소를 포인터 변수에 넣을 때는 기본 자료형 변수앞에 Ampersand 즉 "&"를 붙여서 포인터 변수에 저장하면 됩니다. 지난 시간에 길게 포스팅한 내용은 아래 소스로 정리할 수 있습니다. // 정수형 변수 선언 int ival = 3; // 정수형 변수를 가리키는 포인터 선언 int *iptr; // 정수형 변수의 주소를 포인터 변수에 assign iptr = &ival; // 결과 출력 printf (.. 2020. 10. 15.
C언어 공부하기 - 포인터를 알아보자 C언어를 공부할 때 많은 사람들이 다른 언어로 갈아타는 단계가 포인터에 대한 개념에서 입니다. 그만큼 내용 이해가 어렵지만 포인터를 빼놓고 C언어 프로그램을 작성하는 것은 모래위에 집을 짓는 것보다 더 위험한 것일 겁니다. 처음 듣는 어려운 개념을 가장 빠르게 배우는 방법은 무엇일까요? 당연히 자주 써보는 겁니다. 포인터를 이해하려고 개념을 책으로만 공부하다보면 이책 저책 같은 개념을 다른 방식으로 설명을 해 놓아서 더욱 더 미궁으로 빠지기 쉽습니다. 포인터도 마찬가지입니다. 일단 몇가지 개념을 공부한 다음에 코딩을 해보면서 당연하게 여기게 될때까지 하다보면 자연스럽게 이해가 됩니다. 포인터? 도대체 너 누구니? 포인터(Pointer)는 간단히 말해 메모리 주소(Memory Address)를 저장하는 변.. 2020. 10. 7.
C언어 공부하기 - 다차원 배열 다차원 배열(Multi-dimensional Array)은 배열의 배열(array of arrays)라고도 불립니다. 다차원 배열을 정의는 배열의 정의에서 본 것처럼 대괄호([배열의 크기])를 연속적으로 추가해주면 됩니다. C언어에서 배열의 차원 수의 제한이 있는 것 같지는 않지만 3차원배열 이상으로 정의하여 코딩을 하다보면 머리가 깨질 정도로 헷갈리고 실수할 가능성도 매우 높아집니다. 앞선 포스팅에서 어떤 반의 성적을 일차원 배열로 어떻게 사용하는 지 알아봤는데요, 만약에 반이 2개라면 2차원 배열로 다음과 같이 정의하고 초기화할 수 있습니다. 아래 예제는 두개의 반 성적을 2차원 배열로 정의하고 초기화 한 것입니다. score[2][5]를 간단하게 2행 5열인 행렬이라고 생각하면 쉽습니다. 앞의 [2.. 2020. 10. 6.
C언어 공부하기 - 배열 일차원 배열 지금까지 C언어에서 변수를 선언하고 사용한 예제에서는 변수 하나당 하나의 값만 사용할 수 있었습니다. 예를 들어 학생 5명의 성적을 다루는 프로그램을 짜려면 아래와 같이 변수를 5개 사용해야 합니다. 그리고 선언한 변수의 이름을 일일이 기억을 하고 있다가 해당 학생에 맞는 변수에 성적을 대입시켜야 합니다. 점수를 영어로 score라고 하니까 순서대로 1부터 5까지 번호를 붙여서 처리하면 별 문제가 없어 보입니다. 그런데 score4를 보면 선언을 할 때 오타가 났네요. 뭐 오타가 나면 컴파일러가 잡아주니까 수정을 하면 됩니다. 그런데.... short int score1; short int score2; short int socre3; short int socer4; short int soc.. 2020. 10. 5.
C언어 공부하기 - 스토리지클래스와 프로그램구조 스토리지클래스 스토리지클래스(Storage Class)는 C언어에서 변수나 함수등의 생명주기와 변수가 어느 범위에서 사용될 수 있는지 그리고 메모리에 어떻게 저장이 되는지에 대한 것을 C언어의 지시어로 설정하는 것입니다. 뭐 이렇게 쓰고나니 초보자가 이해하기는 쉽지 않을 것 같군요. 다음과 같은 예를 들어볼께요. #include void func1(); void main() { int i = 10; /* 자동변수 (또는 지역변수) */ func1(); printf("i = %d\n", i); } void func1() { int i = 9; /* 자동변수 (또는 지역변수) */ printf("i = %d\n", i); } PS C:\CS> .\test.exe i = 9 i = 10 main()함수와 fu.. 2020. 8. 19.
C언어 공부하기 - 함수(2) 파라미터와 리턴값 이전 시간에 함수 파라미터에 정수형 값을 넘겨주는 함수의 예제를 잠깐 봤는데요, 이번 시간에는 함수의 파라미터로 정수 아닌 자료형을 넘기고 리턴하는 함수를 알아볼께요. 지난 시간 예제로 들었던 add_int함수는 정수형 값을 두개 받아서 더한 후에 정수형 값을 반환하는 함수였는데요, 만약 실수형 값을 넘기고 그 합을 리턴하는 함수를 작성하려면 다음과 같이 해야 합니다. float add_float(float num1, float num2) { return (num1 + num2); } add_int와 달라진 점은 함수이름이 _int가 아닌 _float로 바뀌었다는 것과 함수 파라미터와 리턴값이 자료형이 int에서 float로 변경된 것입니다. 함수의 파라미터와 리턴값의 자료형(Data .. 2020. 8. 10.