c++ - 为什么指针在函数转换期间会改变自身?

标签 c++ pointers

在下面的例子中,我调用了一个 Func 并将指针传递给它,但在被调用的函数中,参数将指针值显示为完全虚假的东西。如下所示。

bool flag = Func(pfspara);--> pfspara = 0x0091d910 

bool Func(PFSPARA pfspara) --> pfspara = 0x00000005
{
    return false;
}

为什么 pfspara 会变成一些伪造的指针?我无法在调试中重现问题,只能在生产中重现。

谢谢。

最佳答案

如果您尝试在 Visual Studio 中调试优化代码,您不能总是依赖调试器正确显示变量值 - 特别是如果变量未被使用,编译器可能会优化它。

尝试运行这个:

bool Func(PFSPARA pfspara)
{
    printf("%x\n", pfspara);
    return false;
}

关于c++ - 为什么指针在函数转换期间会改变自身?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/214700/

相关文章:

c++ - SFML 2.0 GLSL 体积光散射着色器

php - 减少服务器资源和 php 到 C++ 的编译

将数组的指针更改为更大的数组

python - 将 Python str 传递给 C 函数

arrays - 在 Golang 中获取指针数组的长度

c - 如何将数据从数组发送到指针变量并从指针变量返回到数组?

c++ - '打开文件名': undeclared identifier

C++ - 获取整数位的大小

c++ - 参数化和 "function template partial specialization is not allowed"

c - 数组指针如何存储它的大小?