c – 我想在不使用字符串的情况下向字符声明指针数组
发布时间:2020-12-16 09:54:04 所属栏目:百科 来源:网络整理
导读:这是代码:: #include iostreamusing namespace std;const int MAX = 4;int main (){ char key[20]; char *names[MAX]; for (int i=0; iMAX; i++) { cout " entr keysn"; cin key; names[i]=key; cout names[i]; } for(int i=0; iMAX;i++) { cout names[i];
这是代码::
#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 keysn"; cin >> key; names[i]=key; cout<< names[i]; } for(int i=0; i<MAX;i++) { cout << names[i]; } return 0; } 当我输入键并在1st for循环中打印它们时,它们显示正确的值,但是当我在2nd for循环中打印名称[i]时,它会一直显示最后一次输入的键. 请告诉我:我哪里错了? 解决方法
当你运行名称[i] =键;你没有真正将key的字符串值复制到names [i].
它只是使name [i]指向key所在的位置(因为name [i]& key都是指针). 总而言之,你几次覆盖密钥,并使所有的名称指针都指向密钥. 您需要通过使用std :: string而不是char *或使用strcpy来复制这些字符串.我建议使用std :: string. 使用std :: string,您的代码应如下所示: #include <iostream> #include <string> using namespace std; const int MAX = 4; int main () { string names[4]; for (int i = 0; i < MAX; i++) { cout << "entr keys" << endl; cin >> names[i]; cout << names[i]; } for(int i=0; i<4;i++) { cout << names[i]; } return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |