指针不会返回正确的值

时间:2015-01-11 10:54:10

标签: c function pointers ansi

#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并在主1697527160和1700556911中打印a,b变量时。我知道我可以简单地扫描main中的a,b值但是我的代码中的错误是什么?

1 个答案:

答案 0 :(得分:0)

您正在获取两个局部变量rc的地址,以修改局部变量ab。这些仅存在于函数的范围内。来电者认为没有效果。即使你设法从函数中获取a和/或b,它们也会悬挂指针,因为它们指向的对象不存在于函数之外。

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

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