C++ 将指针设置为循环中的int值
我一直在浏览网站,试图找到我问题的答案,但似乎找不到答案。我想知道为什么当我试图增加指向int值的指针时会得到一个奇怪的数字 起初我认为这可能是因为我没有用大括号括住我的变量*sum,但这也没用 我真的不明白为什么我不能不断增加总和指针:@。我假设我正在更改sum的地址而不是值,但我不知道为什么C++ 将指针设置为循环中的int值,c++,c++11,pointers,C++,C++11,Pointers,我一直在浏览网站,试图找到我问题的答案,但似乎找不到答案。我想知道为什么当我试图增加指向int值的指针时会得到一个奇怪的数字 起初我认为这可能是因为我没有用大括号括住我的变量*sum,但这也没用 我真的不明白为什么我不能不断增加总和指针:@。我假设我正在更改sum的地址而不是值,但我不知道为什么 int userNumber; int * sum = new int; while (std::cin >> userNumber) { if (userNumber == 0)
int userNumber;
int * sum = new int;
while (std::cin >> userNumber)
{
if (userNumber == 0)
break;
else
(*sum) += userNumber;
}
std::cout << "Loop ended with value: " << *sum << std::endl;
int-userNumber;
整数*和=新整数;
while(std::cin>>用户号)
{
如果(userNumber==0)
打破
其他的
(*总和)+=用户编号;
}
std::cout当您使用新int
分配int
时,它不会初始化。它的值将是不确定的,在没有初始化的情况下以任何方式使用它将导致未定义的行为
您需要对其进行初始化,这可以通过分配完成:
int * sum = new int(0);
使用new int
分配int
时,它不会初始化。它的值将是不确定的,在没有初始化的情况下以任何方式使用它将导致未定义的行为
您需要对其进行初始化,这可以通过分配完成:
int * sum = new int(0);
为什么不在循环的开头打印值?你可以直接跳入问题为什么不在循环的开头打印值?你可以直接跳入问题