// [ 문제14 - 1 : callByValue & callbyReference ]
// [문제1] 정수의 거듭제곱 반환(callbyvalue , callbyreference)
#include<stdio.h>
int SquareByValue(int num);
void SquareByReference(int* ptr);
int main(void)
{
int num;
printf("정수 입력 :");
scanf_s("%d", &num);
printf("CallByValue 결과 :%d\n", SquareByValue(num));
SquareByReference(&num);
printf("CallByReference 결과 :%d\n", num);
}
int SquareByValue(int num)
{
return num * num;
}
void SquareByReference(int* ptr)
{
*ptr *= (*ptr);
}
// [ 문제14 - 1 : callByValue & callbyReference ]
// [문제2] 포인터를 이용한 swap
// num1 ->2번째 요소에
// num2 ->3번째 요소에
// num3 ->1번째 요소에 저장
#include<stdio.h>
void Swap3(int* ptr1, int* ptr2, int* ptr3);
int main(void)
{
int num1 = 1;
int num2 = 2;
int num3 = 3;
printf("num1 :%d, num2 :%d, num3 :%d\n",num1,num2,num3);
Swap3(&num1, &num2, &num3);
printf("num1 :%d, num2 :%d, num3 :%d\n",num1,num2,num3);
}
void Swap3(int* ptr1, int* ptr2, int* ptr3)
{
int temp = *ptr3;
*ptr3 = *ptr2;
*ptr2 = *ptr1;
*ptr1 = temp;
}
// [ 문제14 - 2 : const 선언에 대한 추가적인 이해 ]
// [문제1] const 추가 이유?
#include<stdio.h>
void ShowAllData(const int* arr, int len);
int main(void)
{
int arr[3] = { 1,2,3 };
ShowAllData(arr, 3);
}
void ShowAllData(const int* arr, int len)
{
int i;
for (i = 0; i < len; i++)
{
printf("%d", arr[i]);
}
}
// [ 문제14 - 2 : const 선언에 대한 추가적인 이해 ]
// [문제2] const 추가 이유?
#include<stdio.h>
void ShowData(const int* ptr);
int main(void)
{
int num = 10;
int* ptr = #
ShowData(ptr);
return 0;
}
void ShowData(const int* ptr)
{
int* rptr = ptr; // warning c4090 경고 발생
printf("%d\n", *rptr);
*rptr = 20;
}
'윤성우 열혈강의 C 정리' 카테고리의 다른 글
[ C 열혈강의 ] 21장 연습문제 : 문자와 문자열 관련 함수 (0) | 2022.07.08 |
---|---|
[ C 열혈강의 ] Visual Studio IDE 에러처리2 (0) | 2022.06.30 |
[ C 열혈강의 ] 헤더파일의 디자인과 활용 (0) | 2022.06.29 |
[ C 열혈강의 ] 둘 이상의 파일을 컴파일하는방법 (0) | 2022.06.29 |
[ C 열혈강의 ] 파일의분할과 static에 대한 고찰 (0) | 2022.06.29 |