函数调用后输出不正确

min*_*_LT 0 c++ pointers function-call output

我希望结果是未定义的或其他东西,但输出是"10",为什么?

我想在调用函数后会破坏内存.

#include <iostream>
void f(int *p)
{
    int l = 20;
    int *k = &l;
    p = k;
}
int main()
{
    int i = 10;
    int *j = &i;
    f(j);
    std::cout << *j;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Luc*_*ore 5

结果不是未定义的.您可以j 按值传递指针,因此您可以在函数内修改它的副本.原件j保持不变,因此结果仍然存在10.