매개변수 전달 기법

[실습] MyStrcpy() 함수 작성하기

// 포인터 연산자 활용
void MyStrcpyPointer(char* dst, int size, char* src) {
    // src이 \\0일 때 까지
    // size일 때 까지
    
    int i = 0;
    
    while( *src != '\\0' || i < size - 1 ) {
        *dst = *src;
        dst++;
        src++;
        i++;
    }
}

// 배열의 인덱스 활용
void MyStrcpyArr(char* dst, int size, char* src) {
    int i;
    for (i = 0; src[i] != '\\0' && i < size - 1; i++) {
        dst[i] = src[i];
    }
    
    dst[i] = '\\0';
}

int main() {
    char src[12] = { "hello,.!" };
    char dst[12] = { 0 };
    
    MyStrcpyArr(dst, sizeof(dst), src);
    puts(dst);
    
    return 0;
}

Stack frame과 지역변수 주소 반환 문제

Call by reference와 메모리 동적 할당 이슈

image.png