【发布时间】:2015-09-13 16:02:43
【问题描述】:
如果有人简单地解释一下如何识别/理解何时应该使用 & 运算符,我将不胜感激。
作为参考:
&地址
和
变量的地址可以通过在变量名前面来获得 带有与号 (&) 的变量,称为地址运算符。为了 示例:
foo = &myvar;
这会将变量 myvar 的地址分配给 foo;通过前面 带有地址运算符 (&) 的变量 myvar 的名称,我们 不再将变量本身的内容分配给 foo,而是 它的地址。
但对我来说一切都太抽象了。
例如这里: 当我们在main函数中生成整数时,为什么是
if (!myDoc.setContent(&file, errorMsg, errorLine)) {
假的?
//这里是代码行->
QString errorMsg;
int errorLine;
QString errorMsg;
int errorLine;
if (!myDoc.setContent(&file, &errorMsg, &errorLine)) {
...
}
以及如何在这里识别,例如,
QString maxString(const QString& s, int len)
应该使用而不是
QString maxString(const QString s, int len)
//这里是第二个例子。
QString maxString(const QString& s, int len) {
if (s.size() < len) return s;
else return s.left(len)+"...";
}
void showTree(QTextStream& out, const QDomNode& node, const int intent) {
QString text;
if (node.nodeType() == QDomNode::ElementNode) {
...
}
} else if (node.nodeType() == QDomNode::TextNode) {
text = node.nodeValue().trimmed();
if (text.isEmpty()) return; // keine Ausgabe leerer Textknoten
text = "#text: "+maxString(text, 20);
}
...
}
【问题讨论】:
-
myDoc.setContent的函数签名是什么? -
FYI
&在函数中是 reference 而不是操作员的地址。 -
@jaggedSpire 这是 DOM 文档代码的一部分。使用 myDoc.setContent 可以读取和解析 QIODevice 提供的整个 XML 文档。当设备尚未打开时,在 if 循环中终止程序。
-
@DianaPapukchieva 是什么意思,它的声明是什么样的?该函数是否将指针作为参数?正如 Zereges 的回答一样,在函数调用中的变量之前使用
&意味着它正在获取 AFAIK 始终在指向函数的指针中传递的变量的地址。&在 c++ 的不同上下文中表示不同的东西。