2014-03-01 2 views
0

나는 단순해야하는 것을하려고합니다. 나는 그것에 하나의 원소만을 가진 배열을 만들고있다. 좌표는 무엇입니까?C 배열의 3D 배열 및 내용 인쇄

그래서 Id는 1 행 3 열 1 x y 및 z 열로 배열을 만든다고 생각했습니다. 이 숫자는 지속적으로 업데이트 될 예정이다 내가 이전 시점의 메모리를 필요로하지 않기 때문에 그 그냥 계속 그래서 여기

오버라이드 (override) 할 것 때문에 더 이상 행을 필요로하지 않는 나의 배열

int coordinates[1][3] = {1,1,1}; 

이것은 올바른 방법으로 값을 출력했는지 확인하려는 것입니다. 그것은 여기에 내 생각 뭐가 문제 행 1 열 1 행 1 열 2, 행 1 열 3

를 인쇄 할 것이다

printf("%d %d %d\n", coordinates[1][1],coordinates[1][2],coordinates[1][3]); 
printf("\n"); 

내 생각? 나는 내 결과로 1 1 1을 얻지 못하고있다. 나는 무작위 숫자를 얻고있다.

나는 C에 익숙하지 않다. 이것은 사소한 것처럼 보이고 나는 그것에 너무 많은 바퀴를 돌리기 시작했다.

편집 :. 일을 작업 MY 과정 (101)을 배열 다시 생각

"이것은 내가 시도한 최초의 일이었다 (또한 주석을 참조) 및 인덱싱은 N-1 내가 임의의 요소를 얻는 것처럼 보였다 때문에 배열 주소 바깥의 메모리 주소. 여전히 불행하게도 벽에 머리를 때리기 시작했습니다. "

나는

printf("%d %d %d\n", coordinates[0][0],coordinates[0][1],coordinates[0][2]); 
printf("\n"); 

을 시도했지만 다시 난 임의의 숫자

결론을 얻었다

나는 마침내 내가 잘못하고 있었는지 알아 냈어 좋아. 너 모두 옳았다. 내 코드의 잘못된 부분을보고있었습니다. 신속한 답변에 감사드립니다. 무슨 일이 있었는지 원래 내 코드에서 float로 좌표를 호출했습니다. 나는 여기서 그것을 int라고 부르므로 복사와 과거를하지 않았다. 그래서 내가 % d로 printf를하려고 할 때 엉망인 결과를 초래하는 float에 대해 int를 출력하려했습니다. 나는 % d을 % f (나는 printf가 어떻게 작동하는지 알지 못했다.)로 바꿨다. 그린 경적 실수와 그것에 대해 미안 해요! 도와 주셔서 다시 한 번 감사드립니다!

답변

1

좌표, [0] [0], 좌표, [0] [1], 좌표, [0] [2] 배열 인덱싱 보통 여기서 0
에서 시작하기 때문에 좌표, [1] [3] , 행 크기는 하나이지만 0을 사용하여 색인화된다는 것을 의미합니다. similary 열은 0에서 3까지 색인화됩니다. 즉0에서 size-1

+0

이것이 내가 시도한 첫 번째 것입니다. 배열 바깥 쪽의 임의의 메모리 주소에 요소를 가져 오는 것처럼 보였기 때문에 배열 101과 인덱싱을 다시 생각하면 n-1입니다. 불행히도 벽에 머리를 치기 시작한 메신저는 아직 작동하지 않았습니다. – CoffeePeddlerIntern

+0

@CoffeePeddlerIntern printf ("% d % d % d", 좌표 [0] [0], 좌표 [0] [1], 좌표 [0] [2]); 잘 작동해야합니다. 코드는 괜찮습니다. – LearningC

2

배열 색인은 C에서 0부터 시작한다는 것을 기억하십시오.이 규칙은 다차원 배열에도 적용됩니다.

어레이의 경우 , coordinates[0][1]coordinates[0][2]입니다. 인덱스가 0이 아닌 하나에서 시작하면

1

그것은이

printf("%d %d %d\n", coordinates[0][0],coordinates[0][1],coordinates[0][2]); 

같이해야한다.

그것이로 인덱싱한다