미새문지

크래프톤 정글 week05, day33 - 포인터 문제 -1 본문

크래프톤 정글/TIL

크래프톤 정글 week05, day33 - 포인터 문제 -1

문미새 2024. 2. 21. 00:40
728x90

  • 현재 코드의 출력값 구하기
    • 정수형 y에 20을 넣고 fun 함수에 y인자를 넣고 호출
    • 받은 매개변수를 정수형 x로 담아 x 에 30을 넣는다. 하지만 직접 주소값에 접근한게 아닌 call by value로 y의 값만 복사되었기 때문에 다시 main으로 와서 출력해도 y의 값은 변하지 않는다.
  • 정답 : 2
    • 현재 코드의 출력값 구하기
      • 1번 문제와 반대로 call by address 즉, 직접 접근을 해 값을 변경할 수 있도록 주소값을 참조해 fun 함수가 호출되어 실행될 때 입력된 매개변수의 값이 y의 주소값으로 접근해 30으로 바뀐다.
    • 정답 : 2

  • 출력이 각각 뭐가 나오는지 확인하기
    • 정수형 arri 배열에 1, 2, 3 값을 넣기, 정수형 포인터 ptri에 arri를 넣기
    • 문자형 arrc 배열에 1, 2, 3 값을 넣기, 문자형 포인터 ptrc에 arrc를 넣기
    • arri의 크기를 출력할 시 정수(4)*배열 개수(3) = 12바이트
    • ptri의 크기를 출력할 시 32비트의 포인터 크기는 4바이트이므로 = 4바이트
    • arrc의 크기를 출력할 시 문자(1)*배열 개수(3) = 3바이트
    • ptrc의 크기를 출력할 시 32비트의 포인트 크기는 4바이트 = 4바이트
  • 정답 : 4
  • 출력값을 구하기
    • 실수형 arr 배열의 크기를 5로 설정하고 12.5, 10.0, 13.5, 90.5, 0.5 값을 넣기
    • 실수형 포인터 ptr1에 배열의 0번째 주소값을 넣기(즉 배열의 주소값을 넣기)
    • 실수형 포인터 ptr2에 ptr1 + 3값을 넣기(포인터 계산으로 0+3해서 인덱스 3의 값을 출력, 그리고 float는 소수점 6자리까지 출력)
    • ptr2 출력하면 인덱스 3값인 90.500000 출력, ptr2 - ptr1을 출력하면 각각 주소값을 가지고 있기 때문에 포인터 계산으로 3- 0 하여 3 출력
  • 정답 : 3
  • 출력값을 구하기
    • 정수형 a를 선언하고 문자형 포인터 x를 선언
    • x에 문자형 포인터로 변환한 a의 주소값을 넣고 a에 512를 넣기
    • x[0]에 1을 넣고 x[1]에 2를 넣고 a를 출력
    • 이 문제는 리틀 앤디안을 사용하는 기계에서만 출력이 가능하기 때문에 513이 출력되는 건 맞지만 문제의 답은 Machine dependent 즉, 기계에 의존한다. 기계에 따라 다르다는 뜻이다. 이상한 문제인
  • 답 : 1
  • 출력값을 구하기
    • 문자형 포인터 ptr에 "GeeksQuiz"라는 문자열 값을 넣기
    • *&*&*ptr 출력하기
    • *과 &가 만나면 서로 상쇄되기 때문에 결국 *ptr을 출력하게 된다. 그리고 문자형이기 때문에 가장 첫 부분인 G만 출력이 된다.
  • 답 : 4

출처 : https://www.geeksforgeeks.org/c-language-2-gq/pointers-gq/

 

Pointer Basics in C - GeeksQuiz

Quiz or Mock test on pointers in C programming language. The quiz contains multiple choice and output questions for GATE and technical interview preparation

www.geeksforgeeks.org

 

 

학습 시간 : 12 ~ 25시

728x90