C语言。一个难题。

hc334521 2013-09-21 01:49:27
我的需求是这样的,有一个方法

int* readTxt()
{
int arr[]=[读取文本里的学生成绩,你不必关心怎么实现的,且往下看];
return arr;
}

main()
{
int *p=readTxt();
//问题是我想在这里遍历这个数组,可是怎么获取readTxt返回的数组的size??
}


首先要明白我必须在除了readTxt以外的方法中进行遍历,并且这个数组只能以返回值的方式提供给外界遍历。

不符合要求的就别劳您大驾了。

万分感谢感激不尽
...全文
626 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
lin5161678 2013-09-22
  • 打赏
  • 举报
回复
常见的 做法 是 int ReadTxt(int* buff) { /*读取 buff = 读取结果 */ return 读取的数量; }
艾薇儿More 2013-09-22
  • 打赏
  • 举报
回复
返回局部变量的数组本身就是错的,return arr;??
赵4老师 2013-09-22
  • 打赏
  • 举报
回复
返回数组和数组的大小? 你为啥不返回整个互联网内容捏?!
wwk417 2013-09-22
  • 打赏
  • 举报
回复
main() { int *p=readTxt(); //问题是我想在这里遍历这个数组,可是怎么获取readTxt返回的数组的size?? } 你可以试试int size = sizeof(p) / sizeof(p[0]); 可不可以就不清楚了,但是我经常这样求数组的个数。
TheMadMan 2013-09-22
  • 打赏
  • 举报
回复
最常用的是参数传递。 另外如果用结构体的话,最好定义一个指针size,更好点。
青松2 2013-09-22
  • 打赏
  • 举报
回复
hc334521 2013-09-22
  • 打赏
  • 举报
回复
引用 22 楼 hc334521 的回复:
[quote=引用 10 楼 ananluowei 的回复:] int* readTxt() 多给一个参数不就可以了? int* redTxt(int* num) { int arr[]...... *num = size; //数组元素个数 return arr; } 调用的时候 int size; int* p = redTxt(&size); p是数组指针,size就是数组元素个数
这个方法真不错。thanks 我觉得宏定义的方式也是可以。共享一下[/quote] sorry 和大家开了个玩笑。返回局部变量地址是行不通的。返回常量却是可以的,这也就是我为什么不返回int 或者char等基础类型 ,而是返回数组的原因 论坛高手很多,有两个人一眼看出我的目的。不玩了,走了结贴
hc334521 2013-09-22
  • 打赏
  • 举报
回复
引用 23 楼 hc334521 的回复:
[quote=引用 15 楼 wwk417 的回复:] main() { int *p=readTxt(); //问题是我想在这里遍历这个数组,可是怎么获取readTxt返回的数组的size?? } 你可以试试int size = sizeof(p) / sizeof(p[0]); 可不可以就不清楚了,但是我经常这样求数组的个数。
在同一个方法中这样是完全可以的,但是作为返回值或者参数之后sizeof(指针)的结果恒为4, 因为他是int 指针,(64位编译器下)[/quote] sorry 和大家开了个玩笑。返回局部变量地址是行不通的。返回常量却是可以的,这也就是我为什么不返回int 或者char等基础类型 ,而是返回数组的原因 论坛高手很多,有两个人一眼看出我的目的。不玩了,走了结贴
hc334521 2013-09-22
  • 打赏
  • 举报
回复
引用 24 楼 max_min_ 的回复:
传参数填充或者通过函数返回都可以的!想啥呢
sorry 和大家开了个玩笑。返回局部变量地址是行不通的。返回常量却是可以的,这也就是我为什么不返回int 或者char等基础类型 ,而是返回数组的原因 论坛高手还有,有两个人一眼看出我的目的
max_min_ 2013-09-22
  • 打赏
  • 举报
回复
传参数填充或者通过函数返回都可以的!想啥呢
hc334521 2013-09-22
  • 打赏
  • 举报
回复
引用 15 楼 wwk417 的回复:
main() { int *p=readTxt(); //问题是我想在这里遍历这个数组,可是怎么获取readTxt返回的数组的size?? } 你可以试试int size = sizeof(p) / sizeof(p[0]); 可不可以就不清楚了,但是我经常这样求数组的个数。
在同一个方法中这样是完全可以的,但是作为返回值或者参数之后sizeof(指针)的结果恒为4, 因为他是int 指针,(64位编译器下)
hc334521 2013-09-22
  • 打赏
  • 举报
回复
引用 10 楼 ananluowei 的回复:
int* readTxt() 多给一个参数不就可以了? int* redTxt(int* num) { int arr[]...... *num = size; //数组元素个数 return arr; } 调用的时候 int size; int* p = redTxt(&size); p是数组指针,size就是数组元素个数
这个方法真不错。thanks 我觉得宏定义的方式也是可以。共享一下
looking1982 2013-09-22
  • 打赏
  • 举报
回复
返回局部变量的数组本身就是错的,return arr;?? 楼主是来考验大家的基础的?
yulitingfeng 2013-09-22
  • 打赏
  • 举报
回复
同时有多个参数返回,可以考虑用go语言。。。呵呵
军说网事 2013-09-22
  • 打赏
  • 举报
回复
1.可以增加一个引用参数返回个数; 2.可在将个数放在arr[0]里,成绩从arr[1]开始; 3.可在arr最后一个元素赋值为-1,当遍历到值为-1时候,就结束,当然这个时候个数也需要遍历后才可以获取。 所以建议楼主试试1和2方法。
lpcads 2013-09-22
  • 打赏
  • 举报
回复
为何不用
int readarray(int* array)
返回数组大小
一只脚走路 2013-09-21
  • 打赏
  • 举报
回复
类似功能我首先会定义结构体: typedef struct _dt{ int len; void *data; } dt_t; 事实上很多库函数或系统函数比如memcpy、read等都需要将长度作为参数传递进去。 遍历用类似*(int *)(data + i * sizeof(int))的方式。
AnYidan 2013-09-21
  • 打赏
  • 举报
回复
用一个输出参数返回数组size
大尾巴猫 2013-09-21
  • 打赏
  • 举报
回复
int* readTxt() 多给一个参数不就可以了? int* redTxt(int* num) { int arr[]...... *num = size; //数组元素个数 return arr; } 调用的时候 int size; int* p = redTxt(&size); p是数组指针,size就是数组元素个数
lm_whales 2013-09-21
  • 打赏
  • 举报
回复
为何不用正途 1)传递指针,预先定义,足够大小的数组 2)返回个数数组元素个数,参数用指针(分数数组)动态分配,记得释放。 3)返回结构体指针 ,元素个数和指针,包装为结构体动态分配,记得释放。 4)静态数组返回指针,个数用参数传递。 作为权宜之计,个数作为数组的一部分也可以。
加载更多回复(8)

69,373

社区成员

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

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