我刚刚开始学习c ++,但我并不太了解,为什么当我退出&d时,它显示的字符与我已经显示过的字符一样多+加1次。
因此它在这里显示了3倍字符“ d” ...作为该行
cout <<&d << endl;
如果有人可以用简单的话解释我的原因,我将感谢他。 如果问题很愚蠢,我感到抱歉。
public void Check(){
final String phone=username.getText().toString();
ref = database.getReference().child("Users");
Query query=ref.orderByChild("phone").equalTo(phone);
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot data:dataSnapshot.getChildren()){
if(data.child(name).exists()){
Log.i("Present","Present");
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
答案 0 :(得分:2)
那是因为&
(在此上下文中)是地址运算符。
编辑:正如@MSalters所指出的那样,C ++标准将此行为定义为“未定义行为”,因此任何事情都可能发生,但是大多数当前的编译器将执行以下操作:
因此,您实际上是将指向char
的指针传递给cout.operator<<()
。这被视为C样式的字符串,并将打印该内存地址中的所有内容,直到下一个\0
nul char。您的'd'
初始化将您的char
放到那里。其余的几乎是随机的。