为什么数组大小为1 [英] Why the array size is 1
本文介绍了为什么数组大小为1的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
可能重复:结果
<一href=\"http://stackoverflow.com/questions/1975128/sizeof-an-array-in-the-c-programming-language\">Sizeof在C编程语言中数组?
我想编写返回1S如果值是数组中的功能。这里的code:
I'm trying to write a function that return 1s if a value is in the array. Here's the code:
int inArrayInt(int iVal, int iArray[])
{
int i;
int arrayL = sizeof(*iArray) / sizeof(int);
int flag = 0;
for(i=0; i < arrayL; i++)
{
if(iVal == iArray[i])
{
flag = 1;
}
}
return flag;
}
问题是, arrayL = sizeof的(* iArray)/的sizeof(INT);
始终计算为1,即使数组包含20个元素。为什么呢?
The problem is that arrayL = sizeof(*iArray) / sizeof(int);
always evaluates to 1, even if array contains 20 elements. Why?
推荐答案
作为参数 INT iArray []
等同于为int * iArray
。
所以,当你做
int arrayL=sizeof(*iArray)/sizeof(int);
您实际上是做
int arrayL=sizeof(int)/sizeof(int);
哪个是相同的大小。
Which is the same size.
您需要添加与您通过大小信息的参数。
You need to add a parameter with which you pass the size information.
int inArrayInt(int iVal, int iArray[], size_t numel){
...
for(i=0;i<numel;i++){
...
}
}
这篇关于为什么数组大小为1的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文