2025. 2. 7. 14:58
#include <stdio.h>
//프로토타입 선언 함수이름은 대충 main+n
int main1(void);
int main2(void);
int main3(void);
int main4(void);
int main(void) {
main1();
main2();
main3();
main4();
return 0;
}
//주소출력하기
int main1(void) {
int a = 3;
printf("%p\n\n", (void *)&a);
// 주소 출력은 %p, %p에게 전달되는 값은 void *타입이어야 함
//출력결과 a의 주소값
return 0;
}
//void *
int main2(void) {
int x = 1;
double y = 2.0;
void *b; // 어떤 타입이든 가리킬 수 있는 포인터
b = &x;
printf("x = %d\n", *(int *)b); // (int *)로 변환 후 역참조, 주소(int *)b가 가지고있는 값
//출력결과 x값
b = &y;
printf("y = %.1f\n\n", *(double *)b); // (double *)로 변환 후 역참조
//출력결과 y값
return 0;
}
//array의 값
int main3(void) {
int array[3];
printf("array의 값 %p\n\n",array); //배열의값은 &array[0]
return 0;
}
//배열주소
int main4(void) {
int array[4];
int i = 0; // 세미콜론 추가
for (i = 0; i < 4; i++) {
printf("배열주소 %p\n", &array[i]);
}
/*array[0], array[1],,,,의 주소를 출력한다
int값 크기만큼 주소 크기가 커진다.
061FEFC
0061FF00
0061FF04
0061FF08
*/
return 0;
}