#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值但是我的代码中的错误是什么?
答案 0 :(得分:0)
您正在获取两个局部变量r
和c
的地址,以修改局部变量a
和b
。这些仅存在于函数的范围内。来电者认为没有效果。即使你设法从函数中获取a
和/或b
,它们也会悬挂指针,因为它们指向的对象不存在于函数之外。
您可以使用直接传递给函数的指针来解决这些问题。这使得scanf
函数可以写入这些指针指向的位置:
void readMatrix(int*a, int*b) {
scanf("%d%d", a, b);
}