왜 여기서 b == c 성립하는거임??
a = 0 일때
출력x
c => 0
b => &{ 0 }
a=> 1
a = 1 일때
출력o
c => &{ 0 }
b => &{ 1 }
a => 2
a = 2 일때
출력o
c => &{ 1 }
b => &{ 2 }
a => 3
return
이러면 a = 2 일때도 b != c 이여야 하는거 아님?
왜 여기서 b == c 성립하는거임??
a = 0 일때
출력x
c => 0
b => &{ 0 }
a=> 1
a = 1 일때
출력o
c => &{ 0 }
b => &{ 1 }
a => 2
a = 2 일때
출력o
c => &{ 1 }
b => &{ 2 }
a => 3
return
이러면 a = 2 일때도 b != c 이여야 하는거 아님?
b가 안변해서ㅇㅅㅇ
array initializer의 value가 항상 일정한 것 같은데 저런 코드 당연히 UB 아님?
동적할당해야 주소가 바뀌겠지
array initializer 안에 상수가 아니라서 undefined behavior 그리고 배열의 주소값을 바로 포인터에 넣을수 없음. int* b = {0,1,2}; 이게 아니고 int b[3] = {0,1,2}; 이게 맞다는 말임. char *a = "asdf"; 이 경우는 문자열 상수니까 포인터에 바로 주소값을 넣는게 가능한거임.
원래 b==c가 계속 성립해야 하는데, B를 0 가리키는 포인터로 정의하니까 null pointer돼서 처음에만 b==c 성립 안했던거임 포인터값 루프마다 찍어보면 확실히 알수있음
지피티돌리세요