如何获得数组的上下标?

BaoBrother 2010-01-03 11:37:24
int arr[];

这个数组元素大小是动态的,请问怎样知道数组的上下标?多谢了!








...全文
523 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangch_nhcmo 2010-01-03
  • 打赏
  • 举报
回复
sizeof(arr)/sizeof(arr[0])
likee003 2010-01-03
  • 打赏
  • 举报
回复
这个是非完整类型,在初始化的时候分配内存空间。
比如:int arr[] = { 1, 3, 4 };
lovesi3344 2010-01-03
  • 打赏
  • 举报
回复
学习了一个新名词:“非完整类型”
飞天御剑流 2010-01-03
  • 打赏
  • 举报
回复
[Quote=引用楼主 baobrother 的回复:]
int arr[]; 

这个数组元素大小是动态的,请问怎样知道数组的上下标?多谢了!



[/Quote]

arr不是动态,int[]叫不完整类型,表示元素个数未知(但不是动态)。不完整类型必须通过某种方式补充完整才能用于定义对象,对于arr,初始化就是其中一种补充完整的方式,例如常用的:

int arr[] = { 1, 3, 4 };
pengzhixi 2010-01-03
  • 打赏
  • 举报
回复
获得元素个数就可以了
fox000002 2010-01-03
  • 打赏
  • 举报
回复
Loaden 的方法只适用于一般的非动态数组

lirg8405 2010-01-03
  • 打赏
  • 举报
回复
求不是好的方法,还是自己保存大小,把大小一起传
老邓 2010-01-03
  • 打赏
  • 举报
回复
如果是new[]在heap中创建,除非保存size,否则无解。
#include <iostream>
#include <istream>

using namespace std;

int main()
{
int arr[] = {9, 3, 19};
cout << sizeof(arr) / sizeof(int) << endl;
return 0;
}
老邓 2010-01-03
  • 打赏
  • 举报
回复
sizeof(arr) / sizeof(int)
gcc_gun 2010-01-03
  • 打赏
  • 举报
回复

非完整类型的说~~~~

LZ都明白了,咱就不说了,哈哈~~~
windsting 2010-01-03
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 baobrother 的回复:]
嗯,谢谢以上几位!

确实受益匪浅,我刚从VB转过来,习惯了Ubound(arr)了,看了你们的意见之后,我觉得还是把数组的大小记录下来比较好,运行效率优先!

(sizeof(arr) / sizeof(arr[0]) 也可以,在不要求效率的情况下!
[/Quote]

(sizeof(arr) / sizeof(arr[0])
这个没有效率问题,它就是一个常数,编译期就已经被求值了。
Meteor_Code 2010-01-03
  • 打赏
  • 举报
回复
C/C++没有动态数组
能实现动态数组功能的就是指针
BaoBrother 2010-01-03
  • 打赏
  • 举报
回复
嗯,谢谢以上几位!

确实受益匪浅,我刚从VB转过来,习惯了Ubound(arr)了,看了你们的意见之后,我觉得还是把数组的大小记录下来比较好,运行效率优先!

(sizeof(arr) / sizeof(arr[0]) 也可以,在不要求效率的情况下!
dqdx_zch 2010-01-03
  • 打赏
  • 举报
回复
学习非完整类型
aslprince 2010-01-03
  • 打赏
  • 举报
回复
这个

我记得好像要自己记入的吧。。。。。。。。

能求的吗???
windsting 2010-01-03
  • 打赏
  • 举报
回复
一般来说,C++的数组下标都是0,但是上标一般需要你保存下来,
除非可以用
sizeof(arr) / sizeof(arr[0])

注意,C++不允许定义空的数组,所以对于数组 arr[0] 永远都是有效的。

另外,可以考虑基本上一定会添加进入新标准的std::array,
它是一个有着标准stl接口的数组,有原生数组的所有功能。

动态的...你还是自己记录大小吧。
Contemplating 2010-01-03
  • 打赏
  • 举报
回复
受益匪浅

64,439

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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