본문 바로가기

C_study

[C] 코딩도장 63 : 함수에서 포인터 매개변수 사용하기

63.9 심사문제: 몫과 나머지를 구하는 함수 만들기

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int getQuotientAndRemainder(int num1, int num2, int*remainder) // 나머지의 주소값을 입력 받으니 int 포인터형으로 매개변수를 선언합니다 
{
    int quotient = num1 / num2;
    *remainder = num1 % num2; // 포인터를 역참조하여 remainder 값을 넣어줍니다
    return quotient; // quotient에 반환값이 들어가므로 return 값으로 quotient를 넣어줘야 합니다
}

int main()
{
    int num1;
    int num2;
    int quotient;     // 몫
    int remainder;    // 나머지

    scanf("%d %d", &num1, &num2);

    quotient = getQuotientAndRemainder(num1, num2, &remainder);

    printf("%d %d\n", quotient, remainder);

    return 0;
}

63.10 심사문제: 함수에서 메모리를 할당하여 배열 만들기

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

void allocArray(void **ptr, int size, int fullSize) // 포인터의 주소를 받아야 하므로 이중 포인터로 지정해줍니다
{
    *ptr = malloc(fullSize * size); // 이중 포인터를 역참조하여 포인터에 동적 메모리를 할당해줍니다 
}

int main()
{
    long long *numArr1;
    int *numArr2;

    allocArray((void **)&numArr1, 10, sizeof(long long));
    allocArray((void **)&numArr2, 3, sizeof(int));

    scanf("%lld %d", &numArr1[9], &numArr2[2]);
    printf("%lld %d\n", numArr1[9], numArr2[2]);

    free(numArr2);
    free(numArr1);

    return 0;
}

63.11 심사문제: 문자열 매개변수 사용하기

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

void printFullName(char *family, char *given) // 반환값 없이 출력해야 하므로 void형으로 선언해줍니다
{
    printf("%s%s", family, given); // 배열에 저장되어있는 문자열이 붙어서 출력됩니다
}

int main()
{
    char familyName[31];
    char givenName[31];

    scanf("%s %s", familyName, givenName);

    printFullName(familyName, givenName);

    return 0;
}