CC++获取int数组元素的个数
⽂章⽬录
sizeof 指针
⼀、⾮参数数组
可以使⽤sizeof(a)/sizeof(a[0])或sizeof(a)/sizeof(int)来获取元素个数。
#include<iostream>
using namespace std;
int a[]={1,2,3};
int main()
{
int b[]={1,2,3};
cout <<sizeof(a)/sizeof(int)<< endl;// 3
cout <<sizeof(b)/sizeof(b[0])<< endl;// 3
return0;
}
⼆、参数数组
1.问题
不可以使⽤sizeof(a)/sizeof(a[0])或sizeof(a)/sizeof(int)来获取元素个数。
因为sizeof(a)中的a被认为是指针类型的字节(32位机⼦结果是4字节,64位机⼦结果是8字节),⽽不是数组的所占的字节。/* 64位机⼦上 */
#include<iostream>
using namespace std;
void func(int a[])
{
cout <<sizeof(a)<< endl;// 8
cout <<sizeof(a)/sizeof(int)<< endl;// 2
cout <<sizeof(a)/sizeof(a[0])<< endl;// 2
}
int main()
{
int a[]={1,2,3};
func(a);
return0;
}
2.解决⽅法
(1)全局变量数组
⼀般ACM⽐赛⽤这样。
#include<iostream>
using namespace std;
int a[]={1,2,3};
void func()
{
cout <<sizeof(a)/sizeof(int)<< endl;// 3
cout <<sizeof(a)/sizeof(a[0])<< endl;// 3
}
int main()
{
func();
return0;
}
(2)增加⼀个参数length
⼀般排序算法就采⽤这样的形式。
#include<iostream>
using namespace std;
void func(int a[],int length){}
int main()
{
int a[]={1,2,3};
int length =sizeof(a)/sizeof(a[0]);
// int length = sizeof(a) / sizeof(int);
func(a, length);
return0;
}
(3)全局变量length
记得在数组的相关部分初始化全局变量length
#include<iostream>
using namespace std;
int length;
void func(int a[]){}
int main()
{
int a[]={1,2,3};
length =sizeof(a)/sizeof(a[0]);
// length = sizeof(a) / sizeof(int);
func(a);
return0;
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。