Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++指针传递函数_C++_Pointers - Fatal编程技术网

C++指针传递函数

C++指针传递函数,c++,pointers,C++,Pointers,我不断收到bool testValue的奇数意外值。我一直在接收随机数,因为我相信它试图访问另一个内存区域。我预测我的代码是如何在testNumber函数中设置的,但我不确定如何解决它。这是我的逻辑 我已将ok设置为true。现在我将ok的内存地址分配给pOk 对于如何使用指针实现引用语义,您有一个基本的误解。您要更改指针指向的对象: *pOK = ok; 但是,C++实际上通过引用类型支持引用语义,这可能是更好的: void testNumber(bool & OK, int n)

我不断收到bool testValue的奇数意外值。我一直在接收随机数,因为我相信它试图访问另一个内存区域。我预测我的代码是如何在testNumber函数中设置的,但我不确定如何解决它。这是我的逻辑

我已将ok设置为true。现在我将ok的内存地址分配给pOk


对于如何使用指针实现引用语义,您有一个基本的误解。您要更改指针指向的对象:

*pOK = ok;
<>但是,C++实际上通过引用类型支持引用语义,这可能是更好的:

void testNumber(bool & OK, int n)
{
    OK = true;
    // ... 
}
不过,更好的方法是简单地返回bool:


哇,这真的是在编译吗?不,不是在编译。函数是void,我不相信调用站点上的*pOk实际上是指向bool的指针。如果你发布真实的代码会有所帮助。使用复制/粘贴。如果你得到奇怪的结果,不要让我们猜这些结果是什么。在你的问题中包括它们。由于各种原因,最后两行不应该编译,事实上它们在g++中不应该编译。@Adam Mihalcin请参见家庭作业标记描述。正在删除它。我想尝试返回,但不返回任何值。我想改变*pOk所指的东西是有道理的。因此,我将IF语句的内容修改为{*pOk=false;},但当我运行时,我的程序崩溃了。@cupcake\u lover,除非你能发布真正的代码,否则你是在浪费我们的时间。试着调试编造的代码是没有意义的。使用CTRL+C、CTRL+V和剪贴板。@DavidHeffernan对不起,我添加了我的真实代码。我使用了假代码,因为我想让它尽可能清楚。@cupcake\u未来的情人请发布真实代码,并在提问时添加家庭作业标签。如果您想在发布之前修改代码,那么为了大声呼喊,请确保它按照您描述的方式编译和运行。要想在编程领域取得进步,你必须做到精确。@cupcake\u lover:如果你花了大量时间在StackOverflow上,你会注意到我们是多么倾向于坚持要求你在作业上做这样的标记。一定要环顾四周,感受一下这个网站是如何运作的;阅读常见问题,看看其他问题是什么样的,它们会引发什么反应。
*pOK = ok;
void testNumber(bool & OK, int n)
{
    OK = true;
    // ... 
}
bool testNumber(int n) { /* ... */ }

if (testNumber(x)) //... etc.