Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C의 메모리 할당 및 컴파일 프로세스에 대한 MCQ

<시간/>

여기에서 메모리 할당 및 컴파일 프로세스에 대한 몇 가지 MCQ 질문을 볼 수 있습니다.

질문 1 − 다음 코드의 출력은 무엇입니까? −

#include <stdio.h>
#include <stdlib.h>
int main() {
   union my_union {
      int i;
      float f;
      char c;
   };
   union my_union* u;
   u = (union my_union*)malloc(sizeof(union my_union));
   u->f = 20.60f;
   printf("%f", u->f);
}

옵션 -

  • 쓰레기 값
  • 20.600000
  • 구문 오류
  • 20.6

설명

공용체를 사용하면 동일한 메모리 위치를 사용하여 여러 유형의 데이터를 저장할 수 있습니다. Union의 모든 구성원은 최대 공간이 있는 동일한 메모리 위치를 사용합니다. 여기서 float가 사용되며 20.60f =20.600000입니다. 따라서 답변 B가 맞습니다.

질문 2 − 컴파일 프로세스의 올바른 순서는 무엇입니까? −

옵션 -

  • 어셈블러, 컴파일러, 전처리기, 연결
  • 컴파일러, 어셈블러, 전처리기, 연결
  • 전처리기, 컴파일러, 어셈블러, 연결
  • 어셈블러, 컴파일러, 연결, 전처리기

설명 -

옵션 C는 정확합니다. 처음에는 코드를 전처리한 다음 컴파일한 다음 어셈블리 수준 코드 또는 개체 코드를 만든 다음 연결이 발생합니다.

질문 3 − 다음 설명 중 사실인 것은 무엇입니까?

옵션 -

  • 코드를 연결하는 동안 #include가 stdio.h로 바뀝니다.
  • 코드를 사전 처리하는 동안 #include는 stdio.h로 대체됩니다.
  • 실행 중 코드 #include가 stdio.h로 대체됨
  • 코드를 편집하는 동안 #include는 stdio.h로 대체됩니다.

설명 -

옵션 B가 맞습니다. 먼저 전처리된 코드를 생성하고 그 단계에서 #include 문에서 언급된 파일에 있는 코드를 코드에 첨부한 다음 컴파일러로 보냅니다.

질문 4 − fflush() 함수를 사용하는 목적 −

옵션 -

  • 모든 스트림 및 지정된 스트림을 플러시하려면
  • 지정된 스트림만 플러시하려면
  • 입출력 버퍼를 플러시하려면
  • 잘못된 라이브러리 함수입니다.

설명 -

이 함수는 출력 스트림을 플러시하는 데만 사용됩니다. 출력 버퍼를 지우고 출력을 콘솔로 보냅니다. 옵션 A가 맞습니다.

질문 5 − 다음 코드의 오류를 지적하십시오. −

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
   char* ptr;
   *ptr = (int*)malloc(30);
   strcpy(ptr, "ABC");
   printf("%s", ptr);
   free(ptr);
}

옵션 -

  • strcpy() 문 오류
  • *ptr =(int*)malloc(30) 오류
  • 무료(ptr) 오류
  • 오류 없음

설명 -

옵션 B가 맞습니다. 여기서 캐스트 없이 포인터에서 정수를 만듭니다.