C 자료구조와 알고리즘
swap
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();
}