- 此问题在此处已有答案**:
(9个答案)
Difference between uninitialized and null pointer(6个答案)
5小时前关门了。
我正在尝试使用这段看似简单的代码来使用指针:
#include <stdio.h>
void prod_and_sum(int a, int b, int *p, int *s) {
*p = a * b;
*s = a + b;
}
int main() {
int *p1, *p2;
prod_and_sum(5, 10, p1, p2);
printf("test");
return 0;
}
但是,我的终端没有任何输出。
就像程序卡在我的函数里,没有程序从函数里出来的迹象,甚至打印一个简单的"测试"
1条答案
按热度按时间djmepvbi1#
您将未初始化的指针作为参数传递给函数
prod_and_sum
。您的代码具有未定义的行为,因为函数prod_and_sum
解引用这些未初始化的指针来存储和与积 *。程序可以停止或继续,也可以产生其他副作用......在您的情况下,它似乎会安静地停止。该行为未定义,没有必要试图了解发生了什么...您只需通过传递
int
变量的地址来纠正该问题,您希望将结果存储在该变量中:请注意,您还可以通过使多个值成为您返回的结构的字段来返回这些值: