c语言的一维数组中,各个元素赋值后分别是多少是不是就固定下来不能改变了?如果不能改变那为什么下面这个程序中f[i]会等于f[i-1]+f[i-2]? #include<stdio.h> int main() { int i,f[20]={1,1}; for(i=2;i<20;i++) f[i]=f[i-2]+f[i-1]; for(i=0;i<20;i++) { if(i%5=0) printf("\n"); printf("%8d",f[i]);} return 0;}
1条回答 默认 最新
谢永奇1 2020-11-16 19:24关注并不是说数组赋值后就固定下来了;数组其实就是一块连续的内存,里面的内存根据数组的类型所占字节数然后进行分块后就是数组元素个数,数组里面的元素的值是可以被改变的,例如:
int a[3] ={0}; //这是给数组内的所有元素清零 a[0] = 1; //给数组的第一个元素赋值为1 a[0] = 2; //再次给数组第一个元素赋值为2 for(int i=0;i<3;i++) { printf("%d \t",a[i]); //此时输出的结果为2 0 0 }你后面如果再给同一块内存赋值的话,这块内存保存的数据就是你新赋的值,之前的值就会被舍弃掉;
数组内的元素其实是一块内存嘛,其实你可以把内存想象成你向你邻居借了个盘子,你借来的这期间你可以用来装什么都行,但是因为盘子很小只能装一样东西,你要装新的东西除非你放在这个盘子上的东西用了其它多余的盘子装了起来否则就只能舍弃掉,用这个借的盘子来装新的东西,但是最后还是要给回邻居的;这里邻居就相当于是系统,你要内存的时候就给你使用,这期间你可以随意使用这块内存,但你用完需要给回它
解决 无用评论 打赏 举报