一维数组的最大下标与元素个数有什么关系,使用数组时应注意什么?

考试题 回答详细点 谢谢了
貌似你说的有问题

1 最大下标 = 元素个数 - 1

2 使用注意:

千万小心数组越界(一般是越上界,即你有个int a[5], 你却操作 a[5], a[6]之类),这个是程序绝大多数crash和错误行为的来源;这也是STL引入std::vector, c++0x引入std::array(暂时叫tr1::array)的原因。

3 楼上的说法问题:
3.1 关于上限:在VS2008里面,没有所谓65536的上限,你new int[100000000];//1亿个int都可以
有的上限是这个数组占用的空间不能超过int的最大值0x7fffffff,具体看msdn查C2148
3.2 不明白数组和堆栈有什么直接的联系

参考资料:自己经验和实力

温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-02-20
好像下标值不能超过 65536

和 元素个数没有关系。。
如果 下标值超过 65536 C编译器会提示错误。。

元素个数越多,。
运算越慢。。
他们采用 堆栈。。
先进后出。。
数组 个数 过大 造成 内存 占用多。。
不管什么都想都会有个度。。
谢谢

下标数 = 元素个数

元素个数 的最大下标 = 元素个数-1

下标初始值从0开始。。
也就是 说:a[5];
下标值=5
元素个数=5;
下标值排列:
a[0],a[1],a[2],a[3],a[4];

没错了吧。。

给你个代码 去验证下:

#include <dos.h>
#include <io.h>
int main(void){

char a[65535];
int i=500;

while(i<10000){
sound(i+=500);
delay(500);
}
printf("C 语言 最大下标个数:65535\n 当数组 超出 65535 C 编译器 将 不能编译\n");
system("pause");
return 0;
}

明天在来看看。。

2维 数组的 下标1*下标2 <= 65535

置于 说Vs2008
它的编译器 变了。。
下标大小没有了 限制 只要 你内存 大 就可以。。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网