如果是函数调用里的参数,则无法得到正确结果。
例:
void f(int a[])
{
printf("%d\n", sizeof(a));//结果是当前系统存储指针变量的内存大小。
}
int main()
{
int array[10];
f(a);
return 0;
}
在C语言里,函数调用传递参数的时候,数组参数无法自动传送大小,OOP语言通常提供一个成员函数或对象属性来获取它,而C语言通常是多加一个参数,比如上例:
void f(int a[], unsigned int n)
{
int i;
for(i=0; i
int main()
{
int array[10];
f(a, 10);
return 0;
}
#include
#include
void fun(int a[])
{
printf("数组a里的元素个数%d",sizeof(a)/2);//一个int占2位字节,输出为2
}
int main()
{
int a[]={1,2};
fun(a);
getch();
return 0;
}
#include
#include
void fun(int a[])
{
printf("%d",sizeof(a));//一个int占2位字节,输出为4
}
int main()
{
int a[]={1,2};
fun(a);
getch();
return 0;
}
什么意思,是计算机元素个数,还是总长度?
你计算数组的长度,然后除以数据类型的长度。
长度为:sizeof(a) ,计算出元素个数sizeof(a)/4
你可以用strlen这个函数