C 언어 면접 문제 1

2628 단어 필기시험
1. 다음 프로그램은 무엇을 출력합니까?
static int a=1;
void fun1(void) {a=2;}
void fun2(void){ int a=3;}
void fun3(void){ static int a=4;}
int main()
{
    printf("%d",a);
    fun1();
    printf("%d",a);
    fun2();
    printf("%d",a);
    fun3();
    printf("%d",a);
}

해석: 본 문제에서 조사한 정적 국부 변수는 함수에 대해서만 항상 볼 수 있으며 함수체가 실행된 후에도 존재하지만 다른 printf('%d', a)로 전역 정적 변수를 출력할 수 없기 때문에 1fun1()를 출력합니다.a=2로 전역 정적 변수를 수정하고 2fun2()를 출력합니다.inta=3,fun2의 국부 변수이기 때문에 호출이 끝나면 방출되고 전체 국면의 a값에 영향을 주지 않기 때문에 2fun3()를 출력합니다.또한 국부 변수이다. 비록 정적이지만 전체 국면의 a값에 영향을 주지 않는다. 던져서 2를 출력하기 때문에 마지막 결과는 1,2,2이다.
2. 다음 코드의 출력 결과는 무엇입니까?
#include 
char *mystring();
”{  char buffer[6]={0};
     char *s="Hello world!";
    for(int i=0;i<sizeof(buffer)-1;i++)
{  buffer[i]=*(s+i);
  }
return buffer;
}
int main( int argc,char **argv)
{printf("%s
"
,mystring()); return 0; }

해석: 함수char*mystring () 에서 new나malloc를 사용하여 메모리를 분배하지 않았기 때문에 버퍼 그룹의 메모리 구역은 창고 구역에 있습니다.char*mystring () 가 끝나면 창고 메모리가 방출되고 문자 그룹도 존재하지 않습니다. 야외 바늘이 생겨서 출력 결과가 알 수 없습니다.

좋은 웹페이지 즐겨찾기