请问C与语言如何获得数组的上界?

来源:百度知道 编辑:UC知道 时间:2024/06/14 19:30:47
类似于VB里的ubound函数一样

貌似没有
不过你可以用sizeof
比如你的数组叫做a
那么
sizeof(a)/sizeof(a[0])
的结果就是你的数组上界
这个地址可以引用但是不能赋值。
比如说定义一个a[10]那么这个值就是10
a[10]可以取地址,但不能向其中写入值

C语言不做数组边界检查,程序员要自己注意控制.
sizeof(a)/sizeof(a[0])的这种做法是有限制的,即只能在声明数组a的函数内使用,因为其它函数调用a的时候,得到的只是数组的首地址,而不是整个数组.比如下面这个程序,输出是1而不是4

#include<stdio.h>

void f(int a[])
{
printf("%d",sizeof(a)/sizeof(a[0]));
}

main()
{
int a[4];
f(a);
}

=="你的问题是如何找到数组的最大值?

max = x[0];
for(int i =0;i<10;i++)
{
if(max<x[i])
max=x[i];
}

int i=0,length=0;
while(a[i]){length++;}
length即上界

或者这样:
Array a[]={...};
int length=sizeof(a)/sizeof(Array);

接楼上的, 假如你得到的最大数值int max = 10, 那么你可以使用 a[0] - a[max-1](即a[9])

如果你使用 a[max], 那么你会看到程序错误.