指针不 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 值,但这是怎么回事在我的代码中?
您正在获取两个局部变量r
和c
的地址,以修改局部变量a
和b
。这些只存在于函数的范围内。调用者认为这没有任何影响。即使你设法从函数中获取 a
and/or b
,它们也将是悬空指针,因为它们指向的对象在函数之外不存在。
您可以通过直接使用传递给函数的指针来解决这些问题。这让 scanf
函数写入这些指针指向的位置:
void readMatrix(int*a, int*b) {
scanf("%d%d", a, b);
}
#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 值,但这是怎么回事在我的代码中?
您正在获取两个局部变量r
和c
的地址,以修改局部变量a
和b
。这些只存在于函数的范围内。调用者认为这没有任何影响。即使你设法从函数中获取 a
and/or b
,它们也将是悬空指针,因为它们指向的对象在函数之外不存在。
您可以通过直接使用传递给函数的指针来解决这些问题。这让 scanf
函数写入这些指针指向的位置:
void readMatrix(int*a, int*b) {
scanf("%d%d", a, b);
}