请问这样计算动态数组的元素有多少个怎么不对呢?
int *p = new int [];
for(i=0; i <15; i++)*(p+i)=i*5;
for(i=0; i <15; i++)cout < <*(p+i) < < " ";
cout < <endl;
i=sizeof(p)/ sizeof(int);
这样计算下来i等于1,实际sizeof(p)算出来的是4,也就是int类型的指针所占的空间大小,并不是这个数组的整体大小啊,sizeof(p)/sizeof(int)因此就等于1了。。。。
可是要怎么样才能靠程序算出来这个动态数组一共有多少个元素呢(也就是15个元素)
一般找出动态数组的常规方法是什么呢
谢谢
[解决办法]
动态申请的数组大小,只有在动行时才能知道,而C++中所有的sizeof都是编译时求值的。
没有别的办法,只有你自己记住了。
不过还是建议你使用std::vector吧,可以通过调用size成员来获得当前大小,也省得待会儿又忘记释放了。
[解决办法]
可以这样 ?? int *p = new int [];
到底分配了多少空间 - -!
[解决办法]
呵呵,你喜欢称他为“动态数组”完全没有问题啊,只要记住它不能通过sizeof来求大小就可以了。
为什么不使用标准库中的std::vector呢?不仅能随时高效地获得其大小,还能自动管理内存、随需增减空间,多方便啊。
[解决办法]
vector是C++自带的,只要包含头文件vector就行
所谓动态数组,是指在你已经知道你需要的大小时再去定义它.而不是说定义了之后还可以去改它的大小
[解决办法]
我也觉得这个不对 int *p = new int [];
这让 delete [] 怎么回收啊.
[解决办法]
int *p = new int [];
这样好象缺少簿记信息的. 会出问题的.
关注一下.
[解决办法]
int *p = new int [];
觉得是这里不对 没有具体申请多少空间
[解决办法]
vector <int> vec;
for(int i=0; i <15; i++)
vec.push_back(i+5);
for(vector <int> ::size_type n=0; n!=vec.size(); i++)
cout < <vec[n] < < " ";
cout < <endl;
[解决办法]
C++语法规定,动态分配数组时药给出其结构,即数组大小
[解决办法]
int *p = new int [];
是啊,我也觉得这样不行的,就算能通过编译,只要一使用,肯定会出问题