C语言数组定义的问题:A[n]是定义了n个元素还是定义了n+1个元素?

C语言数组定义的问题:A[n]是定义了n个元素还是定义了n+1个元素?A[n]是定义了n个元素还是定义了n+1个元素?

A[n]—表示定义了一个含有n个元素的一维数组,数组元素的范围:A[0]~A[n-1],没有A[n]这个元素的。追问

你好,我定义了A[1],并且确实输入了两个值到A[0]A[1],这怎么解释呢?并且也能够输出A[0]A[1]

追答

为什么呢,因为&A[1]这个地址在内存中是客观存在的,确实存在这个地址,这个没有错,你用scanf()函数这样赋值的话当然可以输出来啊。为什么C语言要规定没有A[n]这个值呢,这个涉及到范围边界问题。示例程序如下:

#include <stdio.h>
int main()
{
int a[3]={1,3,5}; //对数组初始化
int i;
for(i=0;i<=3;i++)
printf("a[%d]=%p\n",i,&a[i]); //输出数组元素的地址a[3]的地址值比a[2]的地址值大4
printf("\n");
for(i=0;i<=3;i++)
printf("a[%d]=%d\n",i,a[i]); //输出数组元素的值,输出a[3]的值是个随机值
return 0;
}

运行结果:

a[0]=0060FF00

a[1]=0060FF04

a[2]=0060FF08

a[3]=0060FF0C


a[0]=1

a[1]=3

a[2]=5

a[3]=3

追问

能说一下范围边界的问题吗?有资料我了解一下也可以

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-11-23
在C数组中 定义一个A(N) 就有N个元素,比如 A(1) 就代表一个元素,访问时 为A(0)

至于定义的A(1)中 访问 A(1)时,有返回,,那是因为返回的值是\0,,即空。或者,结束符,
第2个回答  2016-11-23
定义的时候 int A[n] 定义了n个元素
使用的时候 A[m] 代表第m+1个元素(起始位置是0)
例如一个队有10个人,报数,第一个人报0,第二个人报1,第三个人报2...第十个人报9
第3个回答  2016-11-23
这个表示定义n个元素
相似回答