我遇到了数组指针的问题.我看过谷歌,到目前为止,我的尝试是徒劳的.
我想做的是,我有一个字符名称[256].我将成为其中的10个.因此,我需要通过指针跟踪每一个.
试图创建一个指向它们的指针.
int main()
{
char superman[256] = "superman";
char batman[256] = "batman";
char catman[256] = "catman";
char *names[10];
names[0] = superman;
names[1] = batman;
system("pause");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我如何实际遍历指针数组?
names [0]对于存储在names [0]中的任何内容都是char*(在这种情况下是指向superman数组中第一个元素的指针),因此您的猜测cout << names[0] << endl;是正确的.
如果你想遍历那个数组,你需要知道何时停止,这样你就不会遍历你尚未初始化的指针 - 如果你知道你已经初始化了其中的两个指针,你可以做到,例如
for(int i = 0; i < 2 ; i++) {
std::cout << names[i] << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
作为替代方法,在已初始化的最后一个元素之后放置一个NULL指针(确保该NULL指针有空间),例如
names[2] = NULL;
for(int i = 0; names[i] != NULL ; i++) {
std::cout << names[i] << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
为什么不使用字符串和字符串向量来存储名称?SMPL:
#include <string>
#include <iostream>
#include <Vector>
//using namespace std;
int main(void) {
std::string superman = "superman";
std::string batman = "batman";
std::vector<std::string> names;
names.push_back(superman);
names.push_back(batman);
for (unsigned int i = 0; i < names.size(); ++i) {
std::cout << names[i] << std::endl;
}
char c; std::cin >> c;
}
Run Code Online (Sandbox Code Playgroud)