【发布时间】:2013-08-04 21:32:45
【问题描述】:
我以前从未见过以任何语言执行过此操作,因为这是 google 难以搜索的符号。
**是什么意思?
sf::TcpSocket& client = **it;
【问题讨论】:
-
“它”是指针还是迭代器?
我以前从未见过以任何语言执行过此操作,因为这是 google 难以搜索的符号。
**是什么意思?
sf::TcpSocket& client = **it;
【问题讨论】:
它是dereferencing一个指向指针的指针,为了得到原来的sf:TcpSocket。
这只是连续两个* 运算符。
在这种情况下,你也可以这样写:
// Given sf::TcpSocket **it;
sf::TcpSocket *tmp = *it; // Dereference once
sf::TcpSocket& client = *tmp;
【讨论】:
int i = 0,和一个指向 int 的指针:int* j,你可以像这样分配你的 int (i) 的地址: j = &i。如果您想通过j 访问int 的值,则必须像int k = *j 那样取消引用指针(即访问它指向的对象)。如果您创建了一个指向 int 指针的新指针:int** l = &j,要通过这个新指针访问原始 int,您必须取消引用两次:int m = **l。或者你可以像这样通过第二个指针修改 i 的值:**l = 10.
我将给出一个非常简单的快速说明:
int **i;
Say i stores an address 0x1234
*i gives us the value say 0x5678 stored on address 0x1234.
**i gives us the desired value stored on address 0x5678.
您可以继续这样做,直到它的地址空间有效。 但是通过声明。
int **i;
我们只需要严格遵守两次,任何进一步的尝试都会被编译器阻止。从而避免错误。 :-)
【讨论】: