c语言中,数组定义时下标有范围限定吗

smallfishwp 2003-10-14 07:08:21
请问?问一个很简单的问题,
c语言中,数组定义时下标有范围限定吗?
数组名作为函数参数,下标也必须写范围吗
...全文
730 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Nocanie 2003-10-14
  • 打赏
  • 举报
回复
我认为,数组名作为函数参数时,写下标和不写还是有区别的。考虑:
void foo(int arr[], int num);

void foo(int arr[100]);
在后一种情况下,只能传入这样定义的数组:
int arr[100];
而前一种情况,不受传入参数实际大小的限制。

--^-^多多指教
老鱼趣多多 2003-10-14
  • 打赏
  • 举报
回复
数组最大下标是65535
TianGuangZao 2003-10-14
  • 打赏
  • 举报
回复
I agree with hotrain(hotrain).

"下标没有限制,只要你的内存足够。"
I dont think so
挺拔的劲松 2003-10-14
  • 打赏
  • 举报
回复
int A[]
main()
{
.......
}
首先A[]后缺了分号。
另外因为在函数外定义是全局变量,全局变量的数组必须加范围。
下标没有限制,只要你的内存足够。
hotrain 2003-10-14
  • 打赏
  • 举报
回复
看C语言书的时候没有注意这个问题,但我想应该是有限制的,原因有二:
1、堆栈的大小有限,如果是局部变量,则要考虑堆栈的容量。
2、即使是全局数据,也有一个段长的约束,这与操作系统和编译程序有关。比如用TC做一个16位的程序,下标当然不能是一个超出整型数表示范围的长整数。
orcale 2003-10-14
  • 打赏
  • 举报
回复
c裡面不用new,用malloc()分配內存.用free()釋放內存!
c++用new,delete和new(),delete()
smallfishwp 2003-10-14
  • 打赏
  • 举报
回复
c里面也要new?
怎么new?
hezhipei1182 2003-10-14
  • 打赏
  • 举报
回复
要先NEW一下
smallfishwp 2003-10-14
  • 打赏
  • 举报
回复
但为什么我在定义时没写下标,

int A[]
main()
{
.......
}
编译出错说:数组大小不知道
daizh 2003-10-14
  • 打赏
  • 举报
回复
数组名作为函数参数,一维的可以不用写下标,直接写成array[],对于二维的数组可以左边的不用写下标,但是最右边的必须写下标,array[][4]。
playboyxp 2003-10-14
  • 打赏
  • 举报
回复
只要你的内存足够,没有范围
njtu 2003-10-14
  • 打赏
  • 举报
回复
数组定义时下标应该是没有范围的,但是这是说在c中没有明确规定,实际应用中一般不会有特别大的数组,至少不能超过整数的范围吧!
再者栈是有限制的,如果声明特别大的数组肯能会溢出。如果确实需要特别大的内存空间,可以考虑在堆上申请,并且使用链表等特殊的数据结构。

数组在作为参数时会退化为指针,写下标是没有意义的,函数不会做范围检查。如

void foo(char str[100]);

void foo(char* str);
是一样的

69,371

社区成员

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

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