1114-tuequiz

그로밋·2023년 11월 14일
0

krafton jungle

목록 보기
30/58

my answer

given answer



#include <stdio.h>
int main() {
	char* str[2]; 
    str[0] = "hello!"; 
    str[1] = "jungler";
	printf("1. %s\n", str[0] + 1); 
    printf("2. %s\n", (str + 1)[0] + 2);
	return 0; 
}

답: 1. ello! 2. ngler

filling the gap

3번

str[0]+1 의 출력값 의 출력값

쪼개면

  • str[0] : "hello!"에서 h를 가르키고 있는 배열 포인터라서 출력하면 hello!
  • str[0]+1 : "hello!"에서 h를 가르키고 있는 배열 포인터가 1만큼 옆으로 이동해서 ello! 출력

str[1] 를 출력하면? "jungler"

(str+1)[0]+2 의 출력값

마찬가지로 쪼개면

[1] str : str이라는 포인터 배열의 첫번째 요소(hello!)의 주소를 계산한다. (pointer이고 주소값 출력) -> 여기 틀림

*str을 붙여야 hello! 가 출력

[2] str+1 : str이라는 포인터 배열의 두번째 요소(jungler)의 주소를 계산한다.(pointer이고 주소값 출력)

str str+1 의 각 출력 결과

  • following question 1 - 그럼 str+1 출력 결과와 str[1] 출력 결과가 같은가? -> 다름

    다른 이유는
  • fq of fq1 - 그럼 배열의 두번째 요소의 주소를 계산하는 맞는 방법은? 예상-&str[1] -> 맞음

[3] (str+1) : 2의 결과(jungler)의 주소를 계산하고 괄호를 벗긴다. 즉, 2번과 출력값이 같다.(주소값 출력)

괄호와 *의 차이는 뭔가? 괄호는 단순히 괄호 안을 먼저 계산하라는 의미. 따라서, (str+1)이 다른 항들 없이 단독으로 괄호만 쓴거라면 의미가 없다.

  • following quistion - 그럼 괄호가 무의미해 보이는데 유의미한 경우는 뭐가 있나?
    콜백함수를 사용하고 싶을 때 function pointer를 사용할 수 있다. 아래 예제 참고.

[4] (str+1)[0] : 3의 결과(j가르키는 포인터)에 0번 인덱스.(값 출력) 즉, str[1]의[0]. string인데 인덱스

4번에서는 괄호가 유의미 하다. 괄호가 없으면 1의[0]번 인덱스를 찾으려 해서 에러가 발생하기 때문이다.

[5] (str+1)[0]+2 : jungler에서 0번 인덱스, n를 가르키는 배열포인터이므로,ngler 출력

5번

things I didn't know

  • 세그 단점
  • 페이징 장점
  • next fit 동작원리
  • c에서 char, 배열포인터
  • heap sort에서 heapfiy를 루트(최대값)제거하고 나서 해줘야 하는걸 깜빡

things I wanna know

  • function pointer
profile
Work as though your strength were limitless. <S. Bernhardt>

0개의 댓글