저는 전에 Java를 배운 테스트를 위해 C++을 배웠습니다. 이제는 많은 혼란이 있습니다. 부울 값의 2D 배열을 인쇄하려고하는데, #이 참이면? false 인 경우. 내가 생각하는 배열을 먼저 초기화 해봤는데, iterator (printGrid)를 사용하지 않으면 특정 배열 위치의 값을 인쇄 할 수있다. 아래는 내 코드입니다C++에서 2D 배열을 반복 처리하지 못했습니다.
#include<iostream>
void printGrid(bool a[][10]){ // why this method doesn't work?
for(int i = 0; i < sizeof(a)/ (sizeof(*a)) ; i++){
for(int j = 0; j < sizeof(a)/ (sizeof(*a)) ; j++) {
char x = a[i][j] ? '#' : '?'; // i've using the conditional in my std::cout before, still doesn't work
std::cout << x;
}
std::cout<< std::endl;
}
}
void main(){
bool grid[10][10];
for(int i = 0; i < sizeof(grid)/sizeof(*grid) ; i++){
for(int j = 0; j < sizeof(grid)/sizeof(*grid); j++){
grid[i][j] = 1;
}
}
printGrid(grid); // this doesn't work
std::cout<<((grid[0][1]) ? "#" : "?") << std::endl; // this works fine
getchar();
} // main
어디에서 printGrid를 잘못 가져 왔습니까? 나는 main 대신에 똑같은 설정으로 INT의 2D 배열을 사용하려고 시도했다. 어떤 생각?
편집 : 답장을 보내 주셔서 감사합니다. 내 질문에 대한 답변이 없지만 내 기능에 어떤 문제가 있습니까? 나는 같은 설치, 단지 서로 다른 매개 변수를 사용하는 방법을 사용하여 시도했습니다, 그리고 내가 INT의 제 2 차원 배열을 인쇄 할 printint를 사용할 때, 그냥 괜찮 았는데
void printint(int a[][10]){ // why does this work, and the above doesn't?
for(int i = 0; i < 10 ; i++){
for(int j = 0; j < 10 ; j++) {
std::cout <<((a[i][j] == 10) ? "a" : "b");
}
std::cout << std::endl;
}
}
잘 작동하기 때문에?
배열 크기를 전달하거나 컨테이너 클래스를 사용합니다. – crashmstr
@ 2501 내가 무슨 뜻인지 모르겠다. 위에서 언급했듯이, 2D 정수를 사용하여 같은 방법을 시도해 보았다.이 방법은 2D 배열을 잘 인쇄 할 것이다. – Rei
@crashmstr 네 말 뜻은. 내 코드에서 잘못된 점을 지적 해 주시겠습니까? – Rei