본문 바로가기
카테고리 없음

ㅇㅇ

by 임숙숙 2024. 8. 18.

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와 같고,