를 사용하지 않고 문자에 대한 포인터의 배열을 선언 할 코드 ::내가 여기에 문자열
#include <iostream>
using namespace std;
const int MAX = 4;
int main()
{
char key[20];
char *names[MAX];
for (int i=0; i<MAX; i++)
{
cout << " entr keys\n";
cin >> key;
names[i]=key;
cout<< names[i];
}
for(int i=0; i<MAX;i++)
{
cout << names[i];
}
return 0;
}
입니다 I 두 번째 for
루프에 names[i]
을 인쇄하면 반복적으로 입력 된 마지막 키가 계속 표시됩니다.
제발 : 나 어디서 잘못 될까요?
'without using string' 여러분의 코드는 string을 사용해야하는 이유를 정확히 보여줍니다. 원시 배열의 작동 방식과 데이터를 복사하는 방법을 모를 것 같습니다. 힌트 :이'names [i] = key;'는'key'가 가리키는 것을 복사하지 않고 단순히'key' 포인터 자체를 복사합니다. – user657267
'key'와 같은 4 개의 문자열을위한 충분한 공간이 필요합니다.'keys'를 가리키는 것이 아니라'names' 요소가 그것들을 가리 키도록해야합니다. 그리고 다른 문자열에 키를 복사하려면'strcpy()'또는'memmove()'를 사용해야합니다. 더 나은 것은''와'string'을 사용하면 나중에 걱정할 필요가 없습니다. –