数组下标可以改变么?为什么,数组下标就是0。 这句话错吗? 为什么?

2020-11-20 05:40:50 字数 2792 阅读 6573

1楼:百度用户

c语言中,数组下标只能是整形常量或整形表达式 问题不明确

数组下标就是0。 这句话错吗? 为什么?

2楼:匿名用户

数组下标是整数。

对于任意的数组 a[n] 合法的下标范围是0~n-1

实际编程的时候, 可以使用的下标是任意整数,包括负值。 只不过使用超出范围的下标属于越界, 会带来不可预知后果。

3楼:网海1书生

默认情况下,数组下标是从0起算的整数

4楼:听不清啊

应该为,数组下标是从0开始的自然数。

c语言中的数组,把下标互换和把数组中的项本身互换有什么区别?

5楼:珂

不存在把数组下标互换这一说法,c语言中数组下标其实就是以数组起始地址的一个偏移量,本质上属于地址,数组下标只是对地址的一个引用,怎么会有互换这一说法呢?而数组中的项就是该地址内所存的值了,你把数组中的内容互换,本质上就是把这两个地址单元的内容互换了下。

6楼:好嘞啊啊啊啊

下标互换 值不变

i=0,j=1,t

a[0]=2 a[1]=3

a[i]=2 a[j]=3

t=i,i=j,j=t;

j=0;i=1;

a[j]=2 a[i]=3

c++能改变数组下标范围么?

7楼:匿名用户

不可以,比如分配一个数组a[100],可以取道a[0]~a[99]

像pascal这样的语言可以设定下标起始值。例如a[1..50]就可以取道a[1]~a[50]

8楼:匿名用户

不可以。

vb是可以的,但c和c++都不行

在c语言中,数组名作为一个固定指针,而下标是指针运算。且并不做下标越界判断,所以只能按规定的(0,n)的下标范围来

其实一样,变通一下就可以了。用习惯了都一样

数组 下标交换 区别

9楼:死后是好人

。。。。

交换两个变量的值还真不是交换的内存地址值。。。

交换的是两个变量内存地址里存的数据

如果int b[10];

int *a=b; 这个才是把b的地址传递到a这样a存储的是b数组的首地址

a[x],x是地址偏移量

如果说a[1]=a[2]

那么是将首地址为a,偏移量为2的地址里的数据存到首地址是a偏移量为1的地址里

像int *a的这种带*的变量才是存储地址的指针,你说的那些都是普通变量,存储的是数据,交换也是交换数据不是交换内存地址,如果俩个指针指的是同一个地址,那么其中一个指针所指地址的数据变了,那么另一个也会自动跟着变得

为什么数组下标从0开始而不是从1开始?

10楼:匿名用户

数组是一段连续的空间,要求a[i]就是求它

的地址,然后找到它。如果从0开始,则a[i]的地址= 首地址 + i*每个数据所占的长度;如果从1开始,则a[i]的地址= 首地址 + (i-1)*每个数据所占的长度。

是不是前一种更好计算呢。

c++数组下标的类型问题,这样为什么不对,应该在怎么改? 10

11楼:符华阳

void fun(const int n)这里的n是一个const 常量 你传的 i 是一个变量 类型不匹配数组必须指定长度

#include

using namespace std;

#define n 3

int main()

12楼:三秒区小王子

数组在定义的时候必须明确的指出数组的大小,你把变量赋给数组肯定是错的!

为什么数组下标值越大,存取时间越长是错的???

13楼:匿名用户

数组下标越大遍历数组时间越长,但是存取都是对单个位置做操作的,下标多大在内存里都是个地址,拿着地址找数据速度都一样

14楼:匿名用户

都有下标了,就好比**号,难道号码越大就越难拔通?

c语言中数组元素的下标可不可以是数组元素,另外··

15楼:无声的硝烟

c语言程序运行时,数组的存在形式是内存中的一块连续地址空间。而访问数组元素时,计算机会将下标做为空间首地址的偏移量来进行寻址,所以当然可以是任何整形数。

比如int array[10],array的地址是0x7fffff00,那么在访问array[3]时,计算机是这样计算的:

每个整形数大小为4个字节,所以用array的地址加上3乘以4,得到0x7fffff0c,那么从0x7fffff0c到0x7fffff0f这4个字节的值就是array[3]的值。

所以无论传入的下标是什么,理论上都可以计算得到一个地址,但是这个地址不一定是有效的。如果地址无效,就会发生段错误(segmentation fault),也即数组越界/地址访问越界。现在的编译器会认为只要下标是个整型变量,就是可以的,但是执行的时候操作系统仍然会进行监测,否则会影响其他程序的运行。

比如说a = , b = ,那么b[a[3]] = b[5]=6,这个是可以允许的。

16楼:匿名用户

当然可以,只要能够被解释成整数的都可以

为什么数组下标从0开始而不是从1开始

1楼 匿名用户 数组是一段连续的空间,要求a i 就是求它 的地址,然后找到它。如果从0开始,则a i 的地址 首地址 i 每个数据所占的长度 如果从1开始 则a i 的地址 首地址 i 1 每个数据所占的长度。 是不是前一种更好计算呢。 数组下标都是从1开始的,为什么说成是从0开始的呢? 2楼 仁...