为什么数组大小为1 [英] Why the array size is 1

查看:197
本文介绍了为什么数组大小为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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆