【发布时间】:2019-09-13 12:50:11
【问题描述】:
我想使用以下代码,但不使用“[][]”索引数组并用指针替换它
for (int i = 0; i < argc; i++) {
for (int j = 0; argv[i][j] != '\0'; j++) {
//code
}
}
我知道您可以使用指针来遍历数组,但我不确定如何使用第二个数组中未定义的长度来执行此操作,在本例中是来自输入的字符串。由于 argv[] 的每个元素可以有不同的长度,我想确保我可以正确读取字符并知道 argv[] 的每个元素何时结束,下一个开始。
我希望它是这样的:(如果 main 的以下标题有误,请告诉我。)
int main(int argc, char **argv) {
for (int i = 0; i < argc; i++) {
while(argv != '\0') {
//code
*argv+1;
}
//to skip null character
argv+1;
}
}
【问题讨论】:
-
您似乎假设
argv是一个连续的内存块。我不认为这是一个安全的假设。 -
@CareyGregory - 是对的。您不能简单地假设下一个元素就在空字节之后。但是您可以放心地假设每个元素的大小相同,因此可以安全地假设元素从
argv到argv + argc - 1。