1. a의 주소를 알아보기
#include <stdio.h>
// asterisk 용도
// 1. 포인터를 선언할 때
// 2. 나중에
int main(){
int a = 5;
int* ptr;
ptr = &a;
// & -- < ampersand
printf("address of a is %p", &a);
return 0;
}
실행결과
address of a is 0x7ffee8e06688
2. Int, float, char의 크기를 알아보기.
#include <stdio.h>
int main(){
printf("Integer size : %d\n", sizeof(int));
printf("Float size : %d\n", sizeof(float));
printf("Char size : %d\n", sizeof(char));
}
실행결과
Integer size : 4
Float size : 4
Char size : 1
3. Int, float, char의 포인터의 크기를 알아보기.
#include <stdio.h>
int main(){
printf("Integer* size : %d\n", sizeof(int*));
printf("Float* size : %d\n", sizeof(float*));
printf("Char* size : %d\n", sizeof(char*));
}
실행결과
Integer* size : 8
Float* size : 8
Char* size : 8
4. a의 주소와 포인터를 통해 a의 값을 알아보기.
#include <stdio.h>
int main(){
int a= 5;
int* ptr;
ptr = &a;
printf("address of a is %p", &a);
printf("\nvalue of a is %d", *ptr);
}
실행결과
address of a is 0x7ffee0c1768c
value of ptr is 5
5. 포인터를 활용하여 b-a 값 도출하기.
#include <stdio.h>
int main(){
int a= 5;
int b= 10;
int* ptr;
int* ptr2;
ptr = &a;
ptr2 = &b;
printf("b - a = %d ", *ptr2-*ptr);
}
실행결과
b - a = 5
6. 포인터 이용하여 a와 b의 값 스왑하기.
#include <stdio.h>
void swap (int* num1, int* num2){
int temp;
// 스왑 부분
temp = *num1;
*num1 = *num2;
*num2 = temp;
}
int main(){
int a = 5;
int b = 10;
printf("a=%d\nb=%d",a,b);
swap(&a,&b);
printf("\n\nafter swap\n\n");
printf("a=%d\nb=%d",a,b);
}
실행결과
a=5
b=10
after swap
a=10
b=5
7. 포인터 이용하여
#include <stdio.h>
int main(){
char arr[6] = {"hello"};
char* ptr;
ptr = &arr[0];
printf("%c", *ptr);
return 0;
}
실행결과
h
#include <stdio.h>
int main(){
char arr[6] = {"hello"};
char* ptr;
ptr = &arr[0];
// 연산자의 순서
printf("%c\n", *(ptr+1));
printf("%c", ptr[1]);
return 0;
}
실행결과
e
e
#include <stdio.h>
int main(){
char arr[6] = {"hello"};
char* ptr;
ptr = &arr[0];
// 연산자의 순서
printf("%c\n%c\n%c\n%c\n%c", *ptr,*(ptr+1),*(ptr+2),*(ptr+3),*(ptr+4));
return 0;
}
실행결과
h
e
l
l
o