hy18671604733
木剑温华
2016-10-19 07:27
采纳率: 50%
浏览 3.0k
已采纳

C++int数组长度(sizeof(array) / sizeof(array[0]))问题

 //n个数中选出x

#include<iostream>
using namespace std;

template <class T>

int getArrayLen(T& array)
{
    return (sizeof(array) / sizeof(array[0]));
}

int sort(int A[],int x)
{
    for(int i=0;i<(sizeof(A)/sizeof(A[0]));i++)
    {
        if(A[i]==x)
        {
            return i;
            break;
        }
    }
}

int main()
{   
    int A[10]={0,2,3,8,7,9,5,6,4,1};
    int x=0;
    cout<<"请输入要查找的数:";
    cin>>x;
    int k=sort(A,x);
    cout<<"A["<<k+1<<"]="<<A[k];
    return 0;
}

for循环里面的(sizeof(array) / sizeof(array[0]))求数组长度的一直不对,求解答!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • whhlpo
    Huppert 2016-10-19 13:05
    已采纳

    在函数中 sizeof(array) == sizeof(void*), 指针的字节数
    sizeof(A[0]) == sizeof(int), 这里的问题出在sizeof(array)上,在函数中正确使用sizeof(array)必须传递引用

    int sort(int A[],int x) 改为 int sort(int (&A)[10],int x)

    点赞 评论
  • oyljerry
    oyljerry 2016-10-19 07:30

    分别打印(sizeof(array) 和 sizeof(array[0]的大小,看哪里不正确

    点赞 评论
  • Longee
    Longee 2016-10-19 09:29

    int sort(int A[],int x) 函数找不到没有返回值。估计是返回0了。

    点赞 评论

相关推荐