여기에서 메모리 할당 및 컴파일 프로세스에 대한 몇 가지 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가 맞습니다. 여기서 캐스트 없이 포인터에서 정수를 만듭니다.