short birthday; /* short형 변수 brithday를 선언 */
short *ptr; /* 포인터가 가리키는 대상의 크기가 2바이트인 변수를 선언 */
ptr = &birthday; /* birthday 변수의 주소를 ptr 변수에 대입 */
*ptr = 1042; /* ptr에 저장된 주소에 가서 값 1042를 대입 */
/* ptr이 가리키는 주소는 birthday의 주소이고, 그 주소에 1042를 대입하게 되므로
birthday의 값이 1042가 된다 */
#include <stdio.h>
void Test()
{
short soft = 0;
soft = tips; /* 오류 발생, main의 지역변수를 가져올 수 없다 */
}
void main()
{
short tips = 5;
Test();
}
매개변수로 다른 함수의 변수 값을 받아오면 이 것을 해결할 수 있다
#include <stdio.h>
void Test(short data) /* main함수에서 매개변수를 short형식으로 tips를 불러온다 */
{
short soft = 0;
soft = data; /* soft =5; */
tips = 3; /* 오류 발생 하게 된다 */
}
void main()
{
short tips= 5;
Test(tips); /* Test함수의 매개변수에 tips를 전달 */
}
Test 함수에서 여러개의 return 값을 줄 수 없기 때문에 이를 해결하기 위해 '포인터'를 사용한다
#include<stdio.h>
void Test(short *ptr)
{
short soft = 0;
soft = *ptr; /* ptr이 가리키는 값이 tips 즉 '5'이기 때문에 sofr = 5*/
*ptr = 3; /* *ptr은 tips의 주소를 가르키기 때문에 tips = 3 으로바뀐다 */
}
void main()
{
short tips = 5;
Test(&tips);
}
#include <stdio.h>
int main(){
int num = 10;
// ptr이 가리키는 대상은 항상 num으로 고정되며 변경이 불가하다
const int* ptr = #
*ptr = 20; << 불가능 /* 이미 num으로 고정되어 있으므로 변경이 불가하다.
num = 20; << 가능 하지만, num의 값은 따로 변경해 줄 수 있다
return 0;
}