본문 바로가기
프로그래밍학습/MFC

[MFC]배열을 포인터로 전달하기- c++

by 해리보쉬 2021. 3. 20.
728x90
반응형

 

설비 관련된 데이터를 전달하다보면

배열을 사용하는 경우가 많습니다.

아무래도 뭔가 반복적으로 실행하는 설비 특성 상 배열은 필수적이죠

포인터의 악명과 사용의 불편함은 늘 c언어의 장벽이었고

저처럼 비전공자이지만 어쩔수 없이 프로그램을 하고 있는 설비 엔지니어의 경우는

더욱 고생 스럽습니다.

책에서 배운거하고 달리

보통은 짜여진 코드에서 수정하는 일이 많지만

기본은 간단합니다.

배열은 그 자체가 포인터이다!

이걸 알고 쓰면 일반 데이터를 포인터로 넘기는거랑 다르다는 걸 아시고 편하게 쓰실 수 있어요.

반환값자료형 함수이름(자료형 매개변수[])
{
}

반환값자료형 함수이름(자료형 *매개변수)
{
}

배열을 매개변수로 사용하려면 위 두가지 중 하나를 고르세요

그리고 전체 코드에 통일해서 쓰세요

저는 배열이라는걸 나중에 인지하기 쉽게 []를 즐겨씁니다.

#include <stdio.h>

void usepointArray(int arr[], int count)    // 배열의 포인터와 요소의 개수를 받음
{
    for (int i = 0; i < count; i++)
    {
        printf("%d ", arr[i]);
    }

    printf("\n");
}

int main()
{
    int numArray[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

    usepointArray(numArray, sizeof(numArray) / sizeof(int));    // 배열과 요소의 개수를 넣음

    return 0;
}

저는 주로 요렇게 쓰는 편입니다.

실제로 저런식으로 쓰진 않고

void usepointArray(int arr[], int count)    // 배열의 포인터와 요소의 개수를 받음
{
    for (int i = 0; i < count; i++)
    {
        printf("%d ", arr[i]);
    }

    printf("\n");
}
이런 함수를 만들어 놓고 이 함수가 있는 클래스를 포인터로 지정해놓고 처음에 프로젝트 생성시
생성자로 만들어서 계속 불러다 쓰면 됩니다. 

배열은 그 자체가 포인터이다! -> arr[] 이게 주소를 전달하는 것입니다. 배열은 일반 데이터랑 다른게 이겁니다.

*,&를 안써도 되는게 엄청 헷갈리는 거죠

#include <stdio.h>

void usepointtArray(int *arr, int count)    // 매개변수를 포인터로 지정하여 배열을 받음
{
    for (int i = 0; i < count; i++)
    {
        printf("%d ", arr[i]);
    }

    printf("\n");
}

int main()
{
    int numArray[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

    usepointtArray(numArray, sizeof(numArray) / sizeof(int));    // 배열과 요소의 개수를 넣음

    return 0;
}

두번째는 늘 아시는 것 처럼 *별 모양 포인트를 쓰는 거죠

현업에서 시간도 없고 바쁜데 지리하게 이어지는 교육을 듣기 힘드시죠?

위 두 형태만 아시고 그렇게 쓰세요....이제 설비나 펌웨어 아니면 점점 사그러드는 MFC와 c++

너무 어렵게 접근하지 맙시다.

(특히 기본 교육이론에 너무 심취하지 마세요.....실제로 쓰이는 건 많이 다릅니다.)

 

728x90
반응형

댓글