我有这段C代码片段
int numbers[4]={1};
numbers[0]=1; numbers[1]=2; numbers[3]=3; numbers[10]=4;
printf("numbers: %d %d %d %d %d %d\n",numbers[0],numbers[1],numbers[3],numbers[6],numbers[10], numbers[5]) ;
这段代码的输出结果是:
numbers: 1 2 3 963180397 4 0
我有几个问题:
设置numbers [10] 不会出错吗?毕竟数组大小只有4,如果不会出错的话,为什么(因为它没有给出任何错误)。
为什么打印numbers [6] 会产生垃圾值,而numbers [5] 给出0的值?这也不应该是垃圾值吗。
设置numbers [10] 有什么影响?我知道它不会增加数组的大小,但它到底是做什么呢?
谢谢!附注:我使用GCC编译代码!!
0
也可以是垃圾值。 - Xymostech*(array + offset)
来做同样的事情。_注意:由于加法是可交换的,您也可以使用*(offset + array)
,这对应于offset[array]
。_如果您不知道指针是什么,请阅读此文档:http://cslibrary.stanford.edu/106/ - 7heo.tk