c++ - c中的指针,双指针和三重指针

标签 c++ pointers

<分区>

Possible Duplicate:
Can someone tell me the flow of references in the second printf statement in the given code?

 #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++ 编程的资源。我会推荐 Sir Eric Roberts 的 Sir Eric Roberts 的《Programming abstractions in c++》。 另见 smart pointers .

关于c++ - c中的指针,双指针和三重指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12225573/

相关文章:

c++ - RSAES_OAEP_SHA_Decryptor MaxPlaintextLength 返回零

c++ - MinGW c++ 编译器 zlib1.dll 丢失错误?

c++ - Qt 单选按钮在图标下方放置文本

c++ - C++中如何正确定义常量

c - 为什么我可以将更长的字符串分配给 C 中的指针?

与链表冲突的类型

c++ - C++ 中的列表数组。指针;/

c - 在 ANSI C 中将 Int 值序列化到 char* 缓冲区

c++ - 缓存 C/C++ 程序中的值的命中/未命中

c - c中的表达式