可能的重复:
有人可以告诉我给定代码中第二个 printf 语句中的引用流吗? https://stackoverflow.com/questions/4638527/can-someone-tell-me-the-flow-of-references-in-the-second-printf-statement-in-the
#include<iostream>
using namespace std;
char *c[] = {"ENTNG","NST","AMAZI","FIRBE"};
char **cp[] = {c+3,c+2,c+1,c};
char ***cpp = cp;
int main(){
cout<<(**++cpp);
cout<<(*--*++cpp+3);
cout<<(*cpp[-2]+3);
cout<<(cpp[-1][-1]+1);
return 0;
}
我试图理解指针、双指针和三重指针的概念。有人可以告诉我这段代码是如何工作的以及解决方案背后的概念吗?提前致谢。
单指针是可以指向特定数据类型的内存位置的数据类型。在本例中,它是 char,因此我们假设它是一个 char 指针,并且它只能指向 char 变量,也就是说,它只能保存字符变量的地址。
双指针可以保存单指针的地址,三重指针可以保存双指针的地址。
在您的代码中,第一个指针“c”是一个双指针,它本身保存 cstrings。 cstrings 是单字符指针。那么 'cp' 和 'cpp' 都是三重指针。
至于代码的其余部分,它非常混乱,看起来就像一场噩梦。您最好阅读一些有关指针和基本 C++ 编程的资源。我会推荐斯坦福大学埃里克·罗伯茨爵士的《C++ 抽象编程》。
另请参阅智能指针 http://en.wikipedia.org/wiki/Smart_pointers.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)