나는 임베디드 C에서이 코드에 문제가있다. p를 일부 함수의 매개 변수로 전달하지만 "p"의 경우에는 작동하지 않으면 완벽하게 작동한다. 이 코드의 작동 방식을 자세히 이해하는 데 도움을주십시오.이 char 복사 작동 방법 : * (* ((char **) p)) ++ = ch; in c
-2
A
답변
2
포인터 p는 다음 문자로 (포인트 ** 숯불 캐스팅이 두 번 채널은 해당 위치에 복사 역 참조하고, *p
은 증가한다.
나는 때문에 코드없이 (상상 모든 I입니다 "p
이 로컬 인 경우"작동하지 않는 것은 p
과 관련이 없으며 p 값과 해당 코드의 문맥적 의미와 관련이 있습니다. 코드가 작동하는지 여부는 전적으로 p
은 이중 참조가 의도 한 위치로 분해되도록 유효한 값을 보유합니다.
정직하게 말하십시오 Wever에게, 당신은 너무 "똑똑"입니다, 같은 코드를 작성하지 않도록해야하고, Brian Kernighan과 같이 말했다 :
모두가 디버깅이 처음에 프로그램을 작성처럼 단단 두 배 알고있다. 만약 당신이 그것을 쓸 때 당신이 똑똑하다면 어떻게 그것을 디버깅 할 것입니까?
0
P는이 곳 ch
에서, 두 times.After 역 참조 2 회를 char**
에 형태 캐스트와 역 참조한다 pointer.Initially를 숯불하는 포인터가 증가에 대해 이해하고, by1.Here를 증가하는 것이 copied.After입니다 같은 포인터, 다음을 이해하려고합니다. *p++
은 *p
및 p++
과 같으며, *p
및 (*p)++
과 같지 않습니다. 이와 같이 포인터도 증가합니다. 사본 진술에 세분화 오류가 발생할 수 있습니다.
관련 문제
- 1. C++ char 포인터 복사
- 2. char 배열을 쓰는 방법 "char * buff []"를 FILE in c
- 3. C++ - 서명되지 않은 char *을 새로운 unsigned char * 배열로 복사
- 4. char * ch vs char * ch를 사용하는 이유는 무엇입니까
- 5. cpp : char (-1) in Java-char
- 6. C char [] 및 * char
- 7. C++ enum from char
- 8. split const char * in C++
- 9. C++ char * reinitialising in 연산자 =
- 10. 데이터 형식 (char) in C
- 11. Char to char * C++
- 12. int를 char [] in C++로 변환하는 방법
- 13. 복사 char 배열
- 14. char 포인터의 배열 복사
- 15. char * 및 char arr [] 차이점 - C++/C
- 16. const char ** 및 char **
- 17. Ident char in Label
- 18. char *를 2d char 배열로 변환하는 방법
- 19. C++ : function arg char ** is char * []
- 20. char ch = 'Z'는 ch에 저장할 것인가?
- 21. C++ char to const char *
- 22. 문자열을 char 배열로 복사
- 23. 아포스트로피 in char 데이터 형식
- 24. Char to char *
- 25. C++ map :: find char * vs. char []
- 26. c char []
- 27. char 및 char * (포인터)
- 28. 문자열 리터럴 대 const char * in C
- 29. char 포인터에 char 저장
- 30. 문자열 내용을 char 배열로 복사
코드가있는 스 니펫을 게시하십시오. 당신이 그것을 기대하고 그 대신에 어떤 일이 생기는지 설명하십시오. – folkol