高分悬赏,大神赶快出现吧,如下两个写法有什么不同?哪个比较正确
(1)
int arr[10];
int i;
for (i = 1; i <= 10; i++)
...
(2)
int arr[10];
int i;
for (i = 0; i < 10; i++)
...
第一种i循环从1-10,第二种从0-9。arr数组下标从0开始
后一种吧,应该是从零开始的,后一种是0-9
数组a的各个元素对应的序号是a[0],a[1],a[2],...,a[9],所以前两种循环都是表示遍历10个元素,但是第一个循环中表述元素序号时要用a[i-1],否则调用到a[10]时会出错,因为a[10]相当于数组的第十一个元素,地址内存储值不确定。
int a[10];这是一个整型的数组a,有10个元素:a[0]-a[9],因为正确的下标应该是从0开始,到9结束,与生活习惯中的1-10不一样,于是产生一个a[10]的错误,即数组下标越界。
c和c++语言中数组下标越界,编译器是不会检查出错误的,但是实际上后果可能会很严重,比如程序崩溃等,所以在日常的编程中,程序员应当养成良好的编程习惯,避免这样的错误发生。
第二种是对的。for是循环,第一种是取a[1]到a[10],但a[10]实际上没值,最后的值是a[9]。所以第一种会报错。第二种是取a[0]到a[9]。
在for循环数组时,一定不能让i=数组的长度,否则就会数组下标越界!!!