利用循环 向数组输入元素有关问题

利用循环 向数组输入元素问题

程序如下:

inculde<iostream>
using namespace std;

int main()
{
  int i=0;
int ival;
int *ia=new int[100];

  cout<<"piease enter some numbers:"<<endl;

  while(cin>>ival)
{
ia[i]=ival;//原想利用循环向数组中输入元素,但这步不知为什么不能向数组里输入元素
++i;
}

  cout<<i<<ia[i]<<endl;
  cout<<sizeof(ia)/sizeof(*ia)<<endl;

  delete [] ia;

  return 0;

}

求助啊,代码不复杂,但不知为什么循环里会有问题,编译时也没报错,就是调试时发现数组里的元素根本不是我想要的那样!哪位c高手帮菜鸟解答下啊,感激不尽啊!!!




------解决方案--------------------
C/C++ code
     int i=0;
     int ival;
     int *ia=new int[100];

     cout<<"piease enter some numbers:"<<endl;

     while(cin>>ival && i != 100)
     {
         ia[i]=ival;//原想利用循环向数组中输入元素,但这步不知为什么不能向数组里输入元素
         ++i;
     }

     cout<<i<<ia[i]<<endl;
     cout<<sizeof(ia)/sizeof(*ia)<<endl;

     delete [] ia;

------解决方案--------------------
C/C++ code

#include<iostream>
using namespace std;

int main()
{
    int i=0;
    int ival;
    int *ia=new int[100];
    
    cout<<"piease enter some numbers:"<<endl;
    
    while(cin>>ival)
    {
        ia[i]=ival;//原想利用循环向数组中输入元素,但这步不知为什么不能向数组里输入元素
        ++i;          //跳出循环之后ia[i]为一个未赋值的地址
    }
    i=0;   //        
    cout<<i<<ia[i]<<endl;
    cout<<sizeof(ia)/sizeof(*ia)<<endl;
    
    delete [] ia;
    
    return 0;
    
}

------解决方案--------------------
要保证i不越界,而且最后的i值不对啊
------解决方案--------------------
ia[i]应该为 ia[i-1]
------解决方案--------------------
探讨

引用:
开多大空间,多大空间就留给你了,不管你用还是不用

我真的糊涂了,如果是这样的话,那为什么还要动态分配数组,普通数组不就是这样的吗?