1.对于初始化好的数组计算长度:
int tea[] = { 3,5,2,8,1,10,2,8,16,12 };
int length = sizeof(tea) / sizeof(tea[0]);
以及vector直接使用.size()
2.而对于指针数组,当它作为形参时,是无法直接用sizeof来获取数组的长度
int tea[] = { 3,5,2,8,1,10,2,8,16,12 };
void length(int a[]){
int length= sizeof(a) / sizeof(a[0]);//它只输出1,因为a[]作为形参只传了a[0];
}
3.然而,对于在初始化时,不定长的数组,分为两种类型:
- 可以输入数组的长度
int len;
cin>>len;
//用指针p指向new动态分配的长度为len*sizeof(int)的内存空间
int *p=new int[len];
- 动态输入数组元素,想要输入多少就多少,就只能:用vector或者初始化的数组就很大int a[100]这样;
vector<int>test;
//实际上非数字就会结束循环//这个也是有bug啊
while(cin>>value)
test.push_back(value);
int length=test.size();