C 언어의 주제는, 당신이 잘못 될 것 같아! 당신이 알고있는 것 읽고, 생각하지 마!

당신이 이해하고 좋은 검사는 C에서 배열을 마스터, 질문에,보고 말을 많이하지 않은 말을하는 신사 숙녀 여러분, 오늘 우리에게 좋은의 C 언어 질문을주고,이 질문은 :

문제는 출력 될 것입니다 무엇인가?

       우리는 주로 다음과 같은 네 가지 영역에 본문에 코드를 읽고, 똑바로 발견 얻을 : 메소드 포인터 액세스의 배열, 배열 이름과 배열 토리 애플리케이션 다릅니다 주소, 캐스트, 배열 이름 사용 및 다른 변수에 sizeof 연산자.

우리는 취소하기 전에 두 가지 해결해야합니다 :

       도 1은, C의 거의 모든 어레이에 사용되는 식, 포인터 배열 이름의 값은 상수이고, 상기 어레이의 첫 번째 요소의 주소이다. 그 유형은 배열 요소의 유형에 따라 다릅니다가 int 형의 경우, 다음 배열의 이름이 입력 "INT을 가리키는 const 포인터." - "C 포인터"

       2, 다음의 두 경우에, 어레이의 이름 포인터 일정하지 않고, 즉, 오퍼레이터는 sizeof 때 단항 연산자 및 동작의 수와 배열 이름. sizeof 연산자를 반환하지 않고 포인터 배열의 길이보다 전체 배열의 길이. 생성 된 배열 이름의 어드레스를 취하면 어레이에 대한 포인터보다는 포인터 상수 포인터이다. 포인터 배열 포인터는 포인터 및 후 유형 (A [0] 포인터에 대한 포인터)가 함께 반환된다 다르다. - "C 포인터."

이 문제를 해결 :

       1 + 1이 배열 이동국에게 동일한 크기의 공간을 표시 및 A가 전체 어레이의 어드레스를 나타낸다는 INT는 *는 뒤에 INT 형 배열하기 위해, INT 소자 어드레스로 P 지점을 던져졌다 요소.

       2, P-1, P 값에 의해 어드레스가 가리키는 제 역 참조 * 나타낸다 (*. 1-P) (P)는 바이트 번호 어레이 (A)의 마지막 요소, 5 있도록 후방 형 INT는 다시 역 참조 이동 나타낸다 뺀 다음,이 값은 정의되지 않는다.

       . (3), sizeof의 (배열 이름)이 전체 어레이의 바이트 수를 얻었다 즉 5 * 4 = 20, 어드레스 바이트 정도 8 64 비트로를 sizeof (배열 주소).

       4, 대답은 5이 질문은 20,8이 정의되지 않은.

음, 우리는 여기에 대해, 당신이 이해 이야기? 읽을 수있는 인내심 감사합니다!

프로그래밍을 좋아하는 사람들을 위해, 소규모 학습 파트너 그룹과 함께 대답은 매우 중요합니다! 나는 프로그래밍 제로 교환 클럽 (배우기 시작 그룹 ),뿐만 아니라 학습 비디오 파일을 환영 초보자를하고 작은 친구에 전진!

 

게시 된 520 개 원래 기사 · 원 찬양 (132) ·은 80000 +를 볼

추천

출처blog.csdn.net/HUYA69/article/details/105222330