Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将指针设置为循环中的int值_C++_C++11_Pointers - Fatal编程技术网

C++ 将指针设置为循环中的int值

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值的指针时会得到一个奇怪的数字

起初我认为这可能是因为我没有用大括号括住我的变量*sum,但这也没用

我真的不明白为什么我不能不断增加总和指针:@。我假设我正在更改sum的地址而不是值,但我不知道为什么

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);

为什么不在循环的开头打印值?你可以直接跳入问题为什么不在循环的开头打印值?你可以直接跳入问题