본문 바로가기

C/코딩도장8

[코딩도장] Unit 16. 자료형의 확장과 축소 알아보기 보호되어 있는 글 입니다. 2021. 10. 14.
[코딩도장] Unit 64. 함수에서 배열 매개변수 사용하기 1. 배열 매개변수 사용하기 함수에서 배열 매개변수를 사용하려면 형식은 아래와 같다. 반환값자료형 함수이름(자료형 매개변수[ ]) { } 또는 반환값자료형 함수이름(자료형 *매개변수) { } 아래는 위의 내용을 적용한 예시 코드이다. 함수에서 배열 매개변수를 사용할 때 매개변수 이름 뒤에 대괄호만 붙이면 되는데, 이때 대괄호 안에 크기를 지정하더라도 무시된다. 여기서 arr[]은 배열의 메모리 주소를 담고 있는 포인터이고 배열의 실제 크기는 알 수 없으므로 다른 매개변수를 통해 배열의 크기를 받아야 한다. 위의 코드에서 함수 printArray를 사용할 때 요소의 개수를 넣어주었는데, 요소의 개수를 구하는 방법은 17번째 줄처럼 배열의 크기를 자료형의 크기로 나누면 된다. 배열의 크기를 정수로 넣어줘도 .. 2021. 8. 26.
[코딩도장] Unit 62. 함수에서 매개변수 사용하기 1. 함수에서 매개변수 사용하기 함수에서 매개변수를 사용하면 넘겨주는 값에 따라 함수의 반환값이 바뀌게 할 수 있다. 매개변수를 사용하려면 함수를 정의할 때 괄호 안에 자료형과 변수 이름을 지정해주면 된다. 반환값자료형 함수이름(자료형 매개변수) { 코드 } 위의 내용을 이용한 코드를 살펴보자. 이처럼 함수를 정의할 때 괄호 안에 int num1처럼 자료형과 매개변수를 지정해주면, 함수를 호출할 때 넣은 값이 매개변수에 저장된다. 함수에서 매개변수가 어떻게 전해지는지 그림으로 나타내면 아래와 같다. 2. 함수에서 매개변수 여러 개 사용하기 함수에서 매개변수를 여러 개 사용하려면 각 매개변수를 콤마(,)로 구분해줘야 한다. 반환값자료형 함수이름(자료형 매개변수1, 자료형 매개변수2) { 코드 } 위의 코드.. 2021. 8. 22.
[코딩도장] Unit 49. 구조체 포인터 사용하기 1. 구조체 포인터 사용하기 구조체는 멤버 변수가 여러 개 들어있어서 크기가 큰 편이다. 따라서 구조체 변수를 하나하나 선언해서 사용하는 것보다 포인터에 메모리를 할당해서 사용하는 것이 더 효율적이다. 함수를 만들어서 구조체를 사용할 때 포인터를 자주 활용한다. 2. 구조체 포인터를 선언하고 메모리 할당하기 다른 자료형과 마찬가지로 구조체도 포인터를 선언할 수 있다. 구조체 포인터에서도 동적 메모리를 할당할 때 malloc 함수를 사용한다. 구조체 포인터 선언 형식은 아래와 같다. struct 구조체이름 *포인터이름 = malloc(sizeof(struct 구조체이름)); 구조체 포인터를 선언할 때 struct 키워드와 구조체 이름을 사용하고 포인터 변수이므로 *를 꼭 붙여준다. 메모리 할당 시 size.. 2021. 8. 15.
[코딩도장] Unit 48. 구조체 사용하기 1. 구조체 사용하기 프로그램을 만들다 보면 변수 한두 개로는 처리하기 복잡하고 비효율적인 상황이 발생한다. 이런 상황에서, 관련 정보를 하나의 의미로 묶어 자료를 체계적으로 관리하기 위해서 구조체를 사용할 수 있다. 구조체는 struct로 정의한다. 아래는 인적 정보를 표현한 구조체이며, struct Person은 Person 구조체를 정의한다는 뜻이다. struct Person { char name[20]; / int age; char address[100]; }; 2. 구조체를 만들고 사용하기 구조체는 위에서 말했듯이 struct로 정의한다. struct 구조체이름 { 자료형 멤버이름; }; 구조체는 정의만 해서는 사용할 수 없기 때문에 변수로 선언해서 사용해야 한다. struct 구조체이름 변수이.. 2021. 8. 7.
[코딩도장] Unit 60. 함수 사용하기 1. Hello, world! 출력 함수 만들기 프로그래밍 할 때 값만 바뀌고 코드는 반복되는 경우가 많다. 이때, 코드가 길어지고 중간에 실수하는 가능성을 줄이기 위해 함수를 사용할 수 있다. 함수는 main 함수 밖에서 작성해야 한다. 반환값자료형 함수이름() { 코드; } 위에서는 반환값의 자료형이 void, 이름은 hello인 함수를 정의하고 printf로 문자열을 출력했다. 여기서 함수의 반환값 부분에 void를 적어주면 함수의 반환값이 없다는 뜻이 된다. 즉, void는 함수의 반환값이 없음을 나타날 때와 포인터로 사용할 때의 의미가 다르다. 아래는 위의 상황에서 함수의 실행 순서이다. 2. 지역 변수 지역 변수란 함수 안에 선언된 변수를 뜻한다. 지역 변수의 특징은 함수가 끝나면 사라진다는 .. 2021. 8. 1.
[코딩도장] Unit 38. 포인터와 배열 응용하기 1. 포인터와 배열 응용하기 int numArr[10]; 처럼 고정된 크기로 배열 생성 가능하지만 int numArr[size]; 처럼 크기를 동적으로 지정할 수 없다. 따라서 배열의 크기를 동적으로 지정하려면 포인터를 선언하고 메모리를 할당한 뒤 메모리를 배열처럼 사용해야 한다. 2. 포인터에 할당된 메모리를 배열처럼 사용하기 포인터를 배열처럼 사용하려면 포인터에 malloc 함수로 메모리를 할당해주면 된다. 자료형 *포인터이름 = malloc(sizeof(자료형) * 크기); 배열과 메모리가 할당된 포인터는 생성 방법만 다르고 값을 다루는 방법은 같다. *numPtr처럼 포인터를 역참조한 것과 numPtr[0]은 같은 값을 가져온다. *(numPtr + 1)을 역참조한 것과 numPtr[1]도 같은 .. 2021. 7. 24.
[코딩도장] Unit 35. 메모리 사용하기 1. 메모리 사용하기 포인터에는 malloc 함수로 원하는 만큼 메모리를 할당할 수 있다. 메모리의 사용 패턴은 아래와 같다. malloc 함수로 메모리를 할당하고 사용한 다음에 free 함수로 해제한다. 2. 메모리 할당하기 메모리를 사용하려면 malloc 함수로 사용할 메모리 공간을 확보해야 한다. 이때, 필요한 메모리 크기는 바이트 단위로 지정한다. 메모리를 할당하고, 해제하는 함수는 stdlib.h 헤더 파일에 선언되어 있다. 포인터 = malloc(크기); void *malloc(size_t_Size); 성공하면 메모리 주소를 반환, 실패하면 NULL을 반환 메모리를 할당할 때 malloc 함수를 사용하여 할당할 메모리 공간의 크기를 넣어준다. 위의 코드를 보면 sizeof 연산자를 사용해서 i.. 2021. 7. 18.