0
다음 프로그램에서 6 길이 문자열 dd를 읽고 ASCII 코드를 크기가 3x2 인 정수 배열 ipc에 저장하고 있습니다. 문제는 ipc에 저장된 값이 잘못되어 나중에 다시 인쇄 할 때 변경된다는 것입니다. 이런 간단한 코드로 어떻게 명확한 문제가 생길 수 있는지 놀랍습니다.배열 값 자체가 C++에서 변경됩니다
#include<iostream>
using namespace std;
int main()
{ char dd[5];
int ipc[2][1];
cin.get(dd,6);
for(int i=0;i<3;i++)
{ for(int j=0;j<2;j++)
{ ipc[i][j]=int(dd[j+2*i]);
cout<<ipc[i][j]<<endl;
}
}
cout<<"------"<<endl;
for(int i=0;i<3;i++)
{ for(int j=0;j<2;j++)
{ cout<<ipc[i][j]<<endl; }
}
}
주어진 입력이 123456 인 경우 (내가 Win7에 x64의에 코드 :: 블록 10.05을 사용하고 있습니다), 출력은 다음과 같습니다
49
50
51
52
53
2
------
49
51
51
53
53
2
도움의 어떤 종류는 매우 이해할 수있을 것이다. 고맙습니다.
하지 배열은 0부터 시작, 그래서 왜 IPC를 정의 할 필요합니까 [3] [2] :
dd
의 크기와 문자의 수를 증가 해결하려면 읽을 수? – xan99'char dd [5];와'cin.get (dd, 6); '에 문제가 없는가? '\ 0'은 자동으로 dd [5]에 저장됩니다. – tinman
@ xan99 배열의 인덱스는 0부터 계산되기 시작하지만 크기 (여기에서 지정하는)는 인덱스가 아닙니다. – Nobody