8bit == 1b
1024b == 1kb
1024kb == 1mb
1024mb == 1gb
1024gb == 1kb
int == 4b
4gb램에는 int 변수가 최대 몇개까지 저장가능?
// 문제 : char 변수 b를 이용하지 않고 b의 값을 훼손
// 조건 : 포인터 변수를 사용해서 값을 변경해야 한다.
// 조건 : 수정가능 지역에서 b 라는 변수를 언급하면(사용하면) 안됩니다.
#include <stdio.h>
void sol1() {
char a = 1;
char b = 5;
printf("== 변수의 주소 ==\n");
printf("&a : %ld\n", (long)&a);
printf("&b : %ld\n", (long)&b);
char* p;
// 수정가능지역 시작
p = &a;
printf("p : %ld\n", (long)p);
*p = 2;
p = &a - 1;
printf("p : %ld\n", (long)p);
*p = 10;
// 수정가능지역 끝
printf("== 변수의 값 ==\n");
printf("a : %d\n", a);
// 출력 => a : 2
printf("b : %d\n", b);
// 출력 => b : 10
}
void sol2() {
char a = 1;
char b = 5;
printf("== 변수의 주소 ==\n");
printf("&a : %ld\n", (long)&a);
printf("&b : %ld\n", (long)&b);
char* p;
// 수정가능지역 시작
p = &a;
printf("p : %ld\n", (long)p);
*p = 2;
*(p - 1) = 10;
// 수정가능지역 끝
printf("== 변수의 값 ==\n");
printf("a : %d\n", a);
// 출력 => a : 2
printf("b : %d\n", b);
// 출력 => b : 10
}
int main(void) {
printf("== 정답 v1 ==\n");
sol1();
printf("== 정답 v2 ==\n");
sol2();
return 0;
}
https://replit.com/@chan4871/work#main.c
work
Run C code live in your browser. Write and run code in 50+ languages online with Replit, a powerful IDE, compiler, & interpreter.
replit.com
char* p;
char의 주소로 간다.
p = &a;
a의 주소로
*p =2;
주소p에 2를 넣는다.
*(p-1)=10
괄호 안에 p-1은 &b와 같고,