C/C++ で働かす Raspberry Pi 3
C/C++ 로 작동시키는 Raspberry Pi 3
12. 함수오버로드
---------------
#include <iostream>
using namespace std;
void test(int a)
{
cout << "Int:a=" << a << endl;
}
void test(long long int a)
{
cout << "Long Long Int:a=" << a << endl;
}
int main(void)
{
int aInt=3;
long long int aLLInt=33333333;
float aFloat=3.2345;
test(aInt);
test(aLLInt);
test(aFloat); -> Call to 'test' is ambiguous : test함수가 애매합니다.
-> float형 인수를 받는 test함수가 없으므로 에러가 발생했습니다.
return 0;
}
*Parameter ( 파라미터, 인자, 매개변수 ) : 함수 선언시의 입력 변수 )
*Argument ( 인수 ) : 함수 호출시 입력변수
---------------
13. 함수에 배열 전달
배열의 첫번째 요소의 주소를 전달합니다.
---------------
#include <iostream>
using namespace std;
void printArray(int *a,int m,int n)
{
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
cout << a[i*n+j] << ' ';
cout << endl;
}
}
void printArray2(int *b,int k)
{
for(int i=0;i<k;i++)
cout << b[i] << ' ';
}
int main(void)
{
int m=2;
int n=3;
int a[m][n]={{1,2,3},{4,5,6}};
printArray(*a,m,n);
int k=5;
int b[k]={1,2,3,4,5};
printArray2(b,k);
return 0;
}
1차원 배열의 경우는 배열변수명 자체로 첫번째 요소의 주소가 되는데
2차원 배열의 경우는 배열변수명앞에*를 붙여줘야하네요.
아무리 찾아봐도 정보를 못찾아서 곰곰히 생각해봤습니다.
int a[2][3]={{1,2,3},{4,5,6}}; 일때 a는 첫번째 요소의 주소로{1,2,3}의 1차원 배열를 가르키고
*연산자를 붙여서(주소의 값) 1차원 배열의 첫번째 요소 1을 가르킨것이 아닐까
라고 ... 여기고 있습니다.
아닐까요?!?!
*포인터(*)와 참조자(&)
int *pNum; <-포인터
int & rNum; <-참조자
공통점: 다른 객체나 변수를 간접적으로 참조
차이점: 널포인터는 가능하나 널참조자는 불가능( 참조자는 반드시 초기화가 필요)
초기화시 참조자는 객체나 변수를 직접 입력받고, 포인터는 주소값을 입력받음
참조자는 한번 가리킨 대상의 변경 불가, 포인터는 가능
클래스 맴버 접근시 참조자는 . 를 이용, 포인터는 ->를 이용
---------------
파일입출력, 클래스부분도 정리하고 싶었는데..
책 반납일을 맞추지 못했습니다..
끝..
'C++' 카테고리의 다른 글
기약분수, 서로소, 최대공약수(GCD), 유클리드 호제법, 추가) 최소공배수(LCM) (0) | 2019.06.13 |
---|---|
C++ 함수에 값전달, 포인터전달, 참조전달 (0) | 2019.02.07 |
Part 2: string,sizeof,goto,try-throw-catch..C++ 책 반납 전 소소한 정리(C/C++ 로 작동시키는 Raspberry Pi 3) (0) | 2019.02.05 |
Part 1: 메모리동적할당-해제,cmath,bitset....C++ 책 반납 전 소소한 정리(C/C++ 로 작동시키는 Raspberry Pi 3) (0) | 2019.02.05 |
Xcode의 c++프로젝트에서 ofstream으로 파일작성이 안될때 처리 (0) | 2019.02.05 |