june__Park 2021. 6. 29. 18:52
#include <stdio.h>
/*
	변수명 = 메모리 
	배열명 = 데이터(주솟값) 
	메모리의 주솟값 = 데이터 

	*포인터변수 = 메모리 
	&포인터변수 = 데이터 

	* 메모리는 값 대입(=)이 가능하다는 의미
	int a;
	a = 10;

	int a[3];
	a = 10;
	a = {10,20,30};

	< 주소 >
	- 메모리 1byte 당 1번지
	- 시작주소 == 변수/배열의 대표주소
	- 주소 길이 : 
		32bit 운영체제 : 32bit (=4byte) 
		64bit 운영체제 : 64bit (=8byte) 
		 => win32 콘솔 응용프로그램 (4byte)
	- 0번지 ~ (2^31)-1 번지  (약 43억번지)
	- 주소 관련 서식문자 
		%u : unsigned int(양의 int) 
		%p : pointer	 (8자리 16진수)
		%x : hexadecimal (16진수 정수)
		%d (왠만하면 사용 X) 
*/
void ex01(){
	int a = 10;
	printf("%d \n", &a);
	printf("%u \n", &a);
	printf("%p \n", &a);
	printf("%x \n", &a);
}


void swap(int* a,int* b){
	int tmp = *a;
	*a = *b;
	*b = tmp;
	// *주소  ==> 이 주소에 해당 메모리
	//			  이 주소를 찾아가라 (+그 곳의 메모리)
}
void ex02(){
	/*
		포인터 : 메모리 주소 
		포인터 변수 : 주소를 적어두는 변수( 주소 메모장 )
				=> 4byte 
				=> 주소와 NULL(=0) 만 저장한다.
		포인터 자료형 : 자료형*
			int*	: int형 메모리의 주소 
					=> 이 주소 찾아갔을 때 나온 메모리를 int형으로 인식하렴!

			char*   : char형 메모리의 주소
					=> 이 주소 찾아갔을 때 나온 메모리를 char형으로 인식하렴!

			구조체*  : 구조체형 메모리의 주소
	
		< 주소로 접근해야 하는 경우 >
		 = 변수명/배열명으로 접근할 수 없는 경우 
		 - 외부 영역
			=> 동적할당
			=> 파일
			=> 다른 함수의 지역 변수 등 
	*/
	int a, b;
	printf("정수1 : ");  scanf_s("%d", &a);
	printf("정수2 : ");  scanf_s("%d", &b);
	printf("변환 전 a: %d b: %d \n", a, b);
	swap(&a,&b);
	printf("변환 후 a: %d b: %d \n", a, b); 
}



void main(){
	ex02();
}

참조연산자와 역참조연산자