ANSI C 프로그램을 작성 중이며 찾을 수없는 버그가 있습니다. 나는 C에 익숙하지 않으므로 분명하지 않습니다.함수간에 배열을 전달하는 C 디버그
세 파일이 있습니다. 첫 번째는 #include "myheader.h"를 사용하여 다른 두 파일에 포함하는 헤더 파일입니다. 이 헤더 파일에는 다음과 같은 함수 프로토 타입이 있습니다.
double function1(double *, double *, double *, int *, int, int);
두 번째 파일에는 main() 함수가 있습니다. 이 파일 GDB 사용
int APRON[8] = {1, 2, 3, 4, 5, 6, 7, 8};
는 I 관찰 :
(gdb) p APRON
$1 = {1, 2, 3, 4, 5, 6, 7, 8}
다음이 배열 인수로 다른 파일 (FILE3)에 전달되는이, 다른 것들 중에서, 가변적 APRON의 선언을 포함 다음 함수 호출 : FILE3에
zz = function1(aa, bb, cc, APRON, dd, ee);
함수는 다음과 같이 정의된다
,982(gdb) p bins[0]
$5 = 1
(gdb) p bins[1]
$6 = 2
(gdb) p bins[2]
$5 = 3
(gdb) p bins[3]
$6 = 4
(gdb) p bins[4]
$5 = 5
(gdb) p bins[5]
$6 = 6
(gdb) p bins[6]
$5 = 7
(gdb) p bins[7]
$6 = 8
: 118,345,563,210
GDB는이 파일 3을 입력하면 나는 즉시 관찰 : 나는 (정말 내가 뭘하는지 모른다) 여기에 서식 주위에 속지 관찰 있지만
(gdb) p bins
$3 = (int *) 0x7fffffffe390
gdb가이 배열의 출력을 변경 한 이유는 무엇입니까? 또한, (a 나쁜 방법)에 흥미가 I 참조 :
(gdb) p sizeof(bins)
$36 = 8
것이되어야 할 때 8 * 4 = 32 (파일 2에서이 일 때 관찰 됨).
누군가이 파일 3에 들어갈 때이 배열에 어떤 일이 일어나는지 알 수있게 도와 줄 수 있습니까? (왜 그것이 파일로 전달되기 직전과 비교하여 다른 것처럼 보입니까? 3). 스칼라 (dd, ee)가 file3에서 정상적으로 작동하지만 다른 배열 (aa, bb, cc)에서도 동일한 동작을 표시해야합니다.
귀하의 질문은 매우 명확하지 않습니다 같은 것들을 볼 수있는 곳에, DDD을 확인하고,
BTW IMO, 당신의 인생을 훨씬 더 간단 할 것 실제 코드를 게시했지만 배열을 함수에 전달하는 것에 대해 혼란 스럽다고 생각합니다. http://c-faq.com/aryptr/aryptrparam.html 및 http://c-faq.com/aryptr/aryparmsize.html을 참조하십시오. –
APRON은 APRON_TIE와 어떤 관련이 있습니까? 마찬가지로, 쓰레기통은 무엇입니까? 당신은 분명하지 않다. –