0

我是 CPP 的新手。我正在尝试使用pointercin组合,这会产生奇怪的结果。

int *array;
int numOfElem = 0;
cout << "\nEnter number of  elements in array : ";  
cin  >> numOfElem;
array = new (nothrow)int[numOfElem];

if(array != 0)
{
    for(int index = 0; index < numOfElem; index++)
    {
        cout << "\nEnter " << index << " value";
        cin >> *array++;
    }

    cout << "\n values are : " ;
    for(int index = 0; index < numOfElem; index++)
    {
        cout << *(array+index) << ",";
    }
}else
{
    cout << "Memory cant be allocated :(";
}

输出是

在此处输入图像描述

我的代码有什么问题?

问候,

4

2 回答 2

3

循环内部array++增加了指针,所以当你完成第一个循环时,array将指向最初分配的数组之外。

做就是了

cin >> *(array+index);

或者干脆

cin >> array[index];
于 2013-02-17T10:13:15.987 回答
1

array在第一个循环中推进指针 , :

for(int index = 0; index < numOfElem; index++)
{
    cout << "\nEnter " << index << " value";
    cin >> *array++;
}

然后你假装你在第二个循环中使用原始的、未修改的指针:

cout << "\n values are : " ;
for(int index = 0; index < numOfElem; index++)
{
    cout << *(array+index) << ",";
}
于 2013-02-17T10:13:35.333 回答