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
반응형
'프로그래밍학습 > MFC' 카테고리의 다른 글
error C2143: 구문 오류 : ';'이(가) '*' 앞에 없습니다. (0) | 2021.05.11 |
---|---|
파일 매핑 예제 MMF(IPC) (1) | 2021.04.20 |
c2440: 'static_cast':'void(_thiscall CDlgtest::*)(WPARAM,LPARAM)'에서 LRESULT(_thiscall CWnd::*)변환할수 없습니다. (0) | 2021.04.16 |
[MFC]컨트롤 클릭 이벤트 (0) | 2021.03.11 |
MFC 프로그래밍 책 고르기 (0) | 2021.03.11 |
댓글