指针不 return 正确的值

Pointer doesn't return the right value

#include <stdio.h>

void readMatrix(int*a,int*b){
    int r,c;
    scanf("%d%d",&r,&c);
    a = &r;
    b = &c;


}

main(){

    int a,b;
    readMatrix(&a,&b);
    printf("%d\n%d",a,b);
}

当我 运行 它并插入值 1 和 2 并在 main 1697527160 和 1700556911 中打印 a、b 变量时。我知道我可以简单地扫描 main 中的 a、b 值,但这是怎么回事在我的代码中?

您正在获取两个局部变量rc的地址,以修改局部变量ab。这些只存在于函数的范围内。调用者认为这没有任何影响。即使你设法从函数中获取 a and/or b ,它们也将是悬空指针,因为它们指向的对象在函数之外不存在。

您可以通过直接使用传递给函数的指针来解决这些问题。这让 scanf 函数写入这些指针指向的位置:

void readMatrix(int*a, int*b) {
    scanf("%d%d", a, b);
}