c - 在没有引用的情况下使用指针?

标签 c pointers

我对这个函数有问题这个函数使用了一个指针而不引用它但是我很惊讶它能工作而且我不知道为什么函数中的 ptr 没有被引用并且函数工作没有错误如果有人能解释我为什么它不会产生错误,我将不胜感激

#include<stdio.h>

int * Ret(int *x)
{
    int *ptr;
    *ptr = (-1*(*x));
    return ptr;
}

int main(void)
{
    int val = 5,op;
    op = *Ret(&val);
    printf("%d",op);
}

输出将为 -5,但我认为它一定会产生运行时错误?

最佳答案

这是未定义的行为。

任何事情都可能发生,因此这可能是一种有效的行为。

如果您想捕获这些问题,请使用外部工具,例如valgrind 或自定义编译器,例如clang 与地址 sanitizer 。

关于c - 在没有引用的情况下使用指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27251790/

相关文章:

c++ - 指针的问题

c - glibc 检测到 realloc() : invalid pointer

c++ - 取消引用和后缀++优先级

c++ - 通过指针访问时NAN是否返回false?

c - Linux 中的 printf()/fprintf() 问题,UTF-8 编码

c - 如何在printf中获取字符串的基地址?这个o/p的原因是什么?

c - 在 MS Windows 中运行时缺少 Gtk+ 图标

c++ - 如何在包装函数调用序列中正确使用 va_list?

c++ - C 中的 C++ '*&' 等价于什么?它甚至存在吗?

ios - 双指针在 Objective-C 中是什么意思?