C 면접 문제 정선

2767 단어 면접 문제
1. 다음 그림 에서 C 코드 를 실행 합 니 다. 출력 결 과 는 무엇 입 니까?
 
int main(int argc, char** argv[])

{

    char str1[] = "hello world";

    char str2[] = "hello world";

 

    char* str3 = "hello world";

    char* str4 = "hello world";

 

    if(str1 == str2)

        printf("str1 and str2 are same.
"); else printf("str1 and str2 are not same.
"); if(str3 == str4) printf("str3 and str4 are same.
"); else printf("str3 and str4 are not same.
"); return 0; }

정 답: 두 줄 출력.첫 번 째 줄 은 str1 and str2 are not same 이 고 두 번 째 줄 은 str3 and str4 are same 입 니 다.
 
str1 과 str2 는 두 문자열 배열 이다.우 리 는 두 개의 길이 가 12 개의 바이트 인 공간 을 나 누 어 주 고 'hello World' 의 내용 을 각각 배열 에 복사 할 것 이다.이것 은 두 개의 초기 주소 가 다른 배열 이기 때문에 str 1 과 str 2 의 값 을 비교 하면 다 를 수 있 습 니 다.str3 과 str4 는 두 개의 지침 입 니 다. 문자열 의 내용 을 저장 하기 위해 메모 리 를 할당 할 필요 가 없습니다. "hello World" 메모리 에 있 는 주 소 를 가리 키 기만 하면 됩 니 다. "hello World" 는 상수 문자열 이기 때문에 메모리 에 복사 본 이 하나 밖 에 없습니다. 이 str3 과 str4 는 같은 주 소 를 가리 키 기 때 문 입 니 다.따라서 str 3 와 str 4 의 값 을 비교 하면 같 을 것 이다.
다음으로 이동:http://zhedahht.blog.163.com/
2. 다음 그림 의 C + + 코드 를 실행 하고 출력 한 결 과 는 무엇 입 니까?
 
int Fun1(char* str)

{

    printf("%s
", str); return 0; } int Fun2(char* str) { printf("%s
", str); return 1; } int main(int argc, char ** argv[]) { int res1, res2; res1 = (Fun1("a") && Fun2("b")) || (Fun1("c") || Fun2("d")); res2 = (Fun1("a") && Fun2("b")) && (Fun1("c") || Fun2("d")); return res1 || res2; }

정 답: a, c, d, a 로 4 줄 을 출력 합 니 다.C / C + + 에서, 또는 연산 은 왼쪽 에서 오른쪽으로 순서대로 실 행 됩 니 다.rest 1 을 계산 할 때 Fun 1 ("a") & & Func 2 ("b") 를 먼저 계산 합 니 다.우선 Func 1 ("a") 에서 a 로 된 줄 을 출력 합 니 다.Fun 1 ("a") 이 false 로 되 돌아 오기 때문에 Func 2 ("b") 의 반환 값 이 true 든 false 든 Fun 1 ("a") & & & Func 2 ("b") 의 결 과 는 false 입 니 다.Func 2 ("b") 의 결 과 는 중요 하지 않 기 때문에 Func 2 ("b") 는 생략 하고 계산 하지 않 습 니 다.다음은 Fun 1 ("c") | Func 2 ("d") 를 계산 하여 각각 내용 c 와 d 의 두 줄 을 출력 합 니 다.rest 2 를 계산 할 때 먼저 Func 1 ("a") 에서 내용 이 a 인 줄 을 출력 합 니 다.Func 1 ("a") 이 false 로 돌아 가기 때문에 앞 과 같은 이치 로 Func 2 ("b") 는 계산 을 생략 합 니 다.Fun 1 ("a") & & & Func 2 ("b") 의 결과 가 false 이기 때문에 Fun 1 ("c") & & & Func 2 ("d") 의 결과 가 무엇 이 든 표현 식 전체 가 false 이기 때문에 Fun 1 ("c") & & & Func 2 ("d") 는 무시 된다.
 

좋은 웹페이지 즐겨찾기