我学习C++,指针/引用和一些基本知识。我做了一个小程序,计算两次之间的差异。我的程序运行良好,但我不知道为什么在变量前有&符号的情况下,为什么最后会返回一个大值,如123123123:53442344。有我程序的代码
#include <iostream>
#include <stdio.h>
int main() {
int userHour, userMinutes;
printf_s("Enter first hour: ");
scanf_s("%d:%d", &userHour, &userMinutes);
int difference = userHour * 60 + userMinutes;
printf_s("Enter second hour: ");
scanf_s("%d:%d", &userHour, &userMinutes);
difference = abs(difference - (userHour * 60 + userMinutes));
userHour = difference / 60;
userMinutes = difference % 60;
printf("Difference is %02d:%02dh", &userHour, &userMinutes);
}
问题出在代码的最后一行,我在调试器或Google中找不到答案(inb4我在编程方面很新,请教我如何寻找答案:()
最佳答案
&userHour
意味着给我一个指向userHour
的内存地址的指针。因此,printf将打印该内存地址的值。 (请注意,不是存储在该地址的内存中的值,而是内存地址本身的数值。)
您需要printf("Difference is %02d:%02dh", userHour, userMinutes);
。