int array[]的長度問題?

wangyangcheng 2003-10-18 10:21:19
int f(int array[])
{

}

不給出int array[]的長度﹐怎樣在f()中求出?
...全文
89 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Wolf0403 2003-10-18
  • 打赏
  • 举报
回复
呵呵,用宏解决问题
#define ArrayLength(X) _ArrayLength(X, sizeof(X));
int _ArrayLength(int arr[], int count)
{
return count;
}

调用的时候用 ArrayLength(数组名)就 OK了。
新自由呼吸 2003-10-18
  • 打赏
  • 举报
回复
建议不要用数组,用STL的vector会更有效~~~~~~
TianGuangZao 2003-10-18
  • 打赏
  • 举报
回复
如果讨论的是数组大小,用 sizeof 就可以了。
如果讨论的是数组里包含的有效整数个数。那么:
while(*array++)
len++;
只适合以 '\0' 结尾的字符串。
整型数组一般不以 '\0' 结尾,因为 0 本身也是整数。
所以只传递数组名,只是传递了第一个元素地址,是没法得到长度的。

如果想要类似字符串的实现,那么在结尾处就要自己设计有效标志,该标志和其它任何整数不冲突。
wing0 2003-10-18
  • 打赏
  • 举报
回复
while(*array++)
len++;
wangyangcheng 2003-10-18
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;
int* f(int int_array_A[])
{
int length=sizeof(int_array_A);
cout<<"The length of the pointer of integer array is:"<<length<<endl;
return int_array_A;
}

int main()
{
int int_array_A[]={1,2,3,4,5,6};
cout<<"The length of the integer array is:"<<sizeof(int_array_A)<<endl;
int* ptr_int_array=f(int_array_A);
return 0;
}



輸出結果是﹕
24
4


剛剛看了几張舊貼﹐說是sizeof(數組名)則返回尺寸﹐若是sizeof(指針)則返回指針類型的機器字節。
而我在此將數組傳回函數即變成了指針﹐看來是沒有辦法了?
aaaaaaa2000 2003-10-18
  • 打赏
  • 举报
回复
有办法知道吗?
langzi8818 2003-10-18
  • 打赏
  • 举报
回复
这样用好象有点…………
对于数组作为函数的参数,它的用法是传数组的首地址和它的元素的个数
liem 2003-10-18
  • 打赏
  • 举报
回复
没法得到其长度
daizh 2003-10-18
  • 打赏
  • 举报
回复
对于数组作为函数的参数,它的用法是传数组的首地址和它的元素的个数。即int * f(int array[],int count);因为数组作为函数的参数,仅表示地址,所以要一并传数组中元素的个数。
sharkhuang 2003-10-18
  • 打赏
  • 举报
回复
为什么用函数?我没有写程序试试!
如果不用函数的!你可以sizeof(array)/sizeof(int);



但是你用函数,传递过去的是指针,所以sizeof出来可能就是4!

(我还没写程序试试,估计是这样)
wangyangcheng 2003-10-18
  • 打赏
  • 举报
回复
V0.2修正一下﹕

int* f(int array[])
{

}

不給出int array[]的長度﹐怎樣在f()中求出?
Thanks!

wangyangcheng 2003-10-18
  • 打赏
  • 举报
回复
多謝各位﹗

#include <iostream>
using namespace std;
#define ArrayLength(X) _ArrayLength(X, sizeof(X));
int _ArrayLength(int arr[], int count)
{
return count;
}

int main()
{
int array1[]={1,2,3,4,5,6};
cout<<ArrayLength(array1);
cout<<_ArrayLength(array1,sizeof(array1));
return 0;

}



測試了一下﹐...美...人(兄)的方法在有些場合下還是頂用的﹐多謝了﹗
(好像常去的几個版塊English﹑c\c++﹑算法經常看到你喲?)

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧