[함수의 인자로 배열 전달하기]
[기본적인 함수 인자 전달]
값의 복사에 의한 전달
int main(void)
{
int val=10;
int val2=fct(a); //val의 값을 변수 a에 복사
}
int fct(int a)
{
a++;
return a;
}
[배열의 함수 인자 전달]
배열이름 : 포인터에 의한 전달
int main(void)
{
int arr[2]={1,2};
fct(arr); //포인터의 전달
}
void fct(int * arr)
{
arr[1]=3;
}
[배열의 이름 , 포인터의 Sizeof 연산]
배열이름 : 배열 전체 크기를 바이트 단위로 반환
포인터 : 포인터의 크기 (4)를 바이트 단위로 반환
int arr[5]={1,2,3,4,5};
int * pArr=arr;
printf("%d",sizeof(arr)); //20이 나온다
printf("%d",sizeof(pArr)); //4가 나온다
[int * pArr 과 int Parr[] ]
둘다 같은의미 . 다만 int Parr[]과 같은 형식은 함수의 매개변수 선언시에만 사용이 가능하다.
void a (int * parr)
{
//
}
void b(int pArr[])
{
//
}
[Call By Value / Call By Reference]
[Call By Value]
값의 복사에 의한 함수 호출 . 원본 데이터 변경은 허용하지 않는다
int aaa(int a,int b);
int main(void)
{int val1=3;
int val2=5;
aaa(val1,val2);
}
int aaa(int a,int b)
{
return (a+3)+b;
}
[Call By Reference]
참조를 인자로 전달하는 함수 호출 . 원본 데이터 변경이 가능하다.
int main(void)
{
int val1=10;
int val2=20;
Swap(&val1,&val2);
}
Swap(int * a,int *b)
{
int temp=*a;
*a=*b;
*b=temp;
}
[포인터와 const]
const 키워드는 컴파일시 잘못된 연산에 대한 에러메시지 / 안정적인 프로그램 구성을 위해 사용한다
[포인터가 가리키는 변수의 상수화]
int a=10;
const int * pA=&a; //내 눈에는 상수로 보인다
*pA=30; //에러! - 포인터로 가리킬때는 데이터를 바꾸지 못한다.
a=30; //가능!
[포인터 상수화]
int a=10;
int b=10;
int* const PA=&a;
pA=&b; //에러. 포인터는 상수가 되었다
*PA=30; //가능!
'C' 카테고리의 다른 글
18강 . 다차원 배열 그리고 포인터 (0) | 2023.01.08 |
---|---|
16장 . 다차원 배열 (0) | 2023.01.08 |
13강 . 포인터와 배열 (0) | 2023.01.05 |
12장. 포인터의 이해 (0) | 2023.01.05 |
11장 . 1차원 배열 (0) | 2023.01.05 |