C语言 如何计算指针数组的长度

@__Chao - L 2020-06-09 12:10:33
如下代码所示,我想在Count函数中计算main函数中arr数组的长度,但是不正确,应该如何计算呢???

#include <stdio.h>
#include <malloc.h>
int Count(int* arr)
{
int n = 0;
//以下代码计算不正确
while((arr+n) != NULL){
n++;
}
return n;
}
int main()
{
int arr[6] = {1,4,5,8,12,20};

printf("count = %d\n", Count(arr));

retunrn 0;
}
...全文
2895 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
@__Chao - L 2020-06-09
  • 打赏
  • 举报
回复
引用 1 楼 qiu_shaofeng的回复:
arr数组是没有结束标志的,count函数计算不出它的长度。
那我就是要完成这么一个功能该如何实现呢?
qiu_shaofeng 2020-06-09
  • 打赏
  • 举报
回复
arr数组是没有结束标志的,count函数计算不出它的长度。
xws245925587 2020-06-09
  • 打赏
  • 举报
回复
引用 12 楼 古田俊昊 的回复:
sizeof(arr)/sizeof(arr[0]) 就能表达为什么多次一举,还浪费运行时间



引用 7 楼 @__Chao - L 的回复:
[quote=引用 4 楼 自信男孩的回复:]数组中的元素不是以NULL结尾,并且也没有NULL元素呢。

数组的求长度:在main函数里,执行n = sizeof(arr)/sizeof(arr[0]);

我的目的是要在子函数中求出指针数组的长度啊,不是在main中求[/quote]

sizeof(arr)/sizeof(arr[0]) 不就好咯,还想再写的看上去"叼"一点,你用个宏咯 ,如
#define _count_array(arr) (sizeof(arr)/sizeof(arr[0]) )
以后用的时候就_count_array(arr),就是数组的大小咯
古田俊昊 2020-06-09
  • 打赏
  • 举报
回复
sizeof(arr)/sizeof(arr[0]) 就能表达为什么多次一举,还浪费运行时间
岭南红 2020-06-09
  • 打赏
  • 举报
回复
或者把调用函数改为Count(&arr),函数写成inr Count((*arr)[6])
岭南红 2020-06-09
  • 打赏
  • 举报
回复
Count(arr,6)。传多个长度参数
自信男孩 2020-06-09
  • 打赏
  • 举报
回复
引用 8 楼 @__Chao - L 的回复:
[quote=引用 4 楼 自信男孩的回复:]数组中的元素不是以NULL结尾,并且也没有NULL元素呢。

数组的求长度:在main函数里,执行n = sizeof(arr)/sizeof(arr[0]);

我的目的是要在子函数中求出指针数组的长度啊,不是在main中求[/quote]
不好求,除非你定义好数组中最后一个元素的值,否则怎么去求?

另外,专门用子函数去求数组长度反而把问题复杂化了。

数组传递给子函数就不是数组了,而是指针,这个你需要注意
@__Chao - L 2020-06-09
  • 打赏
  • 举报
回复
引用 4 楼 自信男孩的回复:
数组中的元素不是以NULL结尾,并且也没有NULL元素呢。

数组的求长度:在main函数里,执行n = sizeof(arr)/sizeof(arr[0]);
我的目的是要在子函数中求出指针数组的长度啊,不是在main中求
@__Chao - L 2020-06-09
  • 打赏
  • 举报
回复
引用 4 楼 自信男孩的回复:
数组中的元素不是以NULL结尾,并且也没有NULL元素呢。

数组的求长度:在main函数里,执行n = sizeof(arr)/sizeof(arr[0]);
我的目的是要在子函数中求出指针数组的长度啊,不是在main中求
晚晶 2020-06-09
  • 打赏
  • 举报
回复 1
你可以在int数组的最后用一个特别的数字作为结尾标记,只要遇到这个数字,就退出循环,借此获得int数组的长度,这也是字符数组用来判断字符串长度的方法。 不然的话,由于C并不提供数组越界检查,你是无法检测一个int数组到底有多长的。
chxchxkkk 2020-06-09
  • 打赏
  • 举报
回复
除非是字符串,子函数中无法求出int数组的长度
自信男孩 2020-06-09
  • 打赏
  • 举报
回复
数组中的元素不是以NULL结尾,并且也没有NULL元素呢。

数组的求长度:在main函数里,执行n = sizeof(arr)/sizeof(arr[0]);
qiu_shaofeng 2020-06-09
  • 打赏
  • 举报
回复
打个比方:已知南京路第一个门牌号是100,求南京路一共有多少个门牌号?(能做出这个题目,就能解决你的问题) 数组名就是数组第一元素的序号0.

69,382

社区成员

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

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