【发布时间】:2014-08-11 05:13:26
【问题描述】:
这是一个关于指向字符串的指针与指向字符串数组的指针(复数)的问题。这是代码 - 请参阅 cmets 了解问题:
int main(int argc, char** argv) {
// Here, we're just loading each string into an incrementing pointer and printing as we go. It's not an array of pointers. This works fine.
char* dumb = NULL;
cout << argc << endl;
for (int i = 0; i < argc; i++) {
dumb = argv[i];
cout << dumb << endl;
dumb++;
}
// Next we'll try to load the strings into an array of pointers, and print them out. This causes an error (see below).
char** dumber = NULL;
cout << argc << endl;
for (int i = 0; i < argc; i++) {
*(dumber + i) = argv[i];
cout << dumber[i] << endl;
}
return 0
}
Testing.exe 中 0x001899F7 处未处理的异常:0xC0000005:访问冲突写入位置 0x00000000。
有人可以纠正我吗?
【问题讨论】:
-
您正在尝试取消引用空指针
dumber。我不知道你期望什么样的结果。 -
这段代码
dumb++;什么都不做——你已经为argv[i]增加了i,所以把dumb++;放在最后对你的代码没有影响(它实际上只是增加了最后一个argv[i]指针加 1,但无论如何你都要重新分配指针) -
n.m.我希望你不要粗鲁。我是这方面的初学者!
-
这是关于基本概念的,但这是一个很好的问题,学习就是这样发生的。