2-2
참조자 (Reference) : 자신이 참조하는 변수를 대신할 수 있는 또 하나의 이름인 것이다.
- 새로 선언된 변수의 이름 앞에 &를 붙여 기존에 있던 변수 이름의 별칭을 만들어주는 것이다.
int &num2 = num1;
여기서 num2는 num1과 기능과 성격이 같다.
#include <iostream>
using namespace std;
int main()
{
int num = 12;
int* ptr = # //num의 주소
int** dptr = &ptr; //ptr포인터 변수의 주소
int& ref = num; //num의 참조자 ref
int* (&pref) = ptr; // ptr포인터 변수의 참조자 pref
int** (&dpref) = dptr;//dptr 포인터 변수의 참조자 dpref
cout << ref << endl; //12
cout << *pref << endl; //12
cout << **dpref << endl; //12
}
문제 02-1
1번 문제
#include <iostream>
using namespace std;
int func1(int& a)
{
return a++;
}
int func2(int &a)
{
a *= (-1);
return a;
}
int main()
{
int a = 1;
func1(a);
cout << a << endl;
func2(a);
cout << a << endl;
return 0;
}
2번 문제
#include <iostream>
using namespace std;
void SwapByRef2(int& ref1, int& ref2)
{
int temp = ref1;
ref1 = ref2;
ref2 = temp;
}
int main()
{
int val1 = 10;
int val2 = 20;
SwapByRef2(val1, val2);
cout << val1 << endl;
cout << val2 << endl;
return 0;
}
다음 코드에서 SwapByRef2(23,45);처럼 고치면 컴파일 에러가 발생하는 이유는?
: 참조자가 파라미터에 있는데 int형 상수가 들어가게 되면 파라미터의 자료형이 맞지 않아서..?
3번문제
#include <iostream>
using namespace std;
void SwapPointer(int* ptr1, int* ptr2)
{
int temp = *ptr1;
*ptr1 = *ptr2;
*ptr2 = temp;
}
int main()
{
int num1 = 5;
int* ptr1 = &num1;
int num2 = 10;
int* ptr2 = &num2;
SwapPointer(ptr1, ptr2);
cout << *ptr1 << " " << *ptr2 << endl;
return 0;
}
문제 02-2
#include <iostream>
using namespace std;
int main()
{
const int num = 12;
const int *ptr = #
const int& pptr = *(ptr);
cout << num << endl;
cout << *ptr << endl;
cout << pptr << endl;
}
02-5>
malloc을 이용한 동적할당
#include <iostream>
#include <string.h>
#include <stdlib.h>
using namespace std;
char* MakeStrAdr(int len)
{
char* str = (char*)malloc(sizeof(char) * len);
return str;
}
int main()
{
char* str = MakeStrAdr(20);
strcpy_s(str,4, "I am so happy~");
cout << str << endl;
free(str);
return 0;
}
strcpy_s(str, 바이트 수, "문자열");
new와 delete
#include <iostream>
#include <string.h>
using namespace std;
char* MakeStrAdr(int len)
{
char* str = new char[len];
return str;
}
int main()
{
char* str = MakeStrAdr(20);
strcpy_s(str, 4, "I am so Happy~");
cout << str << endl;
delete[]str;
return 0;
}
'Langauge > C++' 카테고리의 다른 글
[열혈 C++ 프로그래밍] Chapter05(복사 생성자) 정리 및 문제 해결 (0) | 2021.02.16 |
---|---|
[열혈 C++ 프로그래밍] Chapter04(클래스의 완성) 정리 및 문제 해결 #2 (0) | 2021.02.14 |
[열혈 C++ 프로그래밍] Chapter04(클래스의 완성) 정리 및 문제 해결 #1 (0) | 2021.02.13 |
[열혈 C++ 프로그래밍] Chapter03 - 클래스의 기본 정리 및 문제 해결 (0) | 2021.02.11 |
C++ 벡터(vector) 사용법 정리 (0) | 2021.02.07 |