C语言循环给数组赋值以下有啥区别? 用scanf为字符数组赋值
C语言中初始化数组和给数组元素赋值有什么区别?
所谓赋初值一般而言就是初始化啊
从根本上说,其实初始化也并不是编译阶段完成,对于全局变量(数组)而言,一种是exe文件中设定该程序的数据区中的为这个数组存放空间中的值已经是初值了,当然这个值倒是编译程序生成目标程序时设定的,程序运行加载时,给定空间中的内容直接拷贝到空间了,这个不占运行时间(C++中则是程序加载到main函数执行之前完成的,这个也不占运行时间)
对于自动局部变量而言,原则上说,每次运行到该模块就会重新初始化一次,肯定是要占用运行时间的,静态局部变量则第一次运行时才初始化一次,自然也会占用运行时间
至于你用赋值语句设定所谓的初值,一定会占用运行时间
C语言数组学习问题 循环方式给数组赋值
就是for循环没学会吧。那就讲一下for循环和数组应用。
就拿你的这个程序举例子好了,定义了一个整型数组a[3],然后看这段代码:
for(i = 0; i < 3; i++)
{
a[i] = i;
}
for循环的括号里面有三个东西,for(赋初值; 循环条件; 步长)
赋初值就是给循环变量(相当于一个计数器)赋初值,当然也可以初始化其他的变量。第一个分号后面是循环条件,只有满足循环条件才执行循环体内部的语句,不满足则跳出循环。第二个分号后面是循环变量的自增步长,就是每次循环结束以后,循环变量要增加或减少多少,当然也可以执行其他的运算,按照需求来。
运算过程如下:
进入for循环后,
第一次循环:i = 0,给变量 i 赋初值为0,然后判断 i < 3,如果i 是 小于3的,那么进入循环内部执行for循环里面的语句,即a[i] = i。
这里,i 是等于 0 的,那么a[i]就是a[0],a[i] = i的意思就是a[0] = 0,也就是说,给数组a的第一个元素(即下标为0的元素)赋值为0。接着a[i]=i这句执行完了,接着执行的是for循环的步长自增语句,即i++。i++和i=i+1是等价的,所以执行完这句语句以后,i的值从0变成了1。到这里,第一次循环就结束了,现在执行第二次循环。
第二次循环:第一次循环结束以后,进入第二次循环之前,先要执行for循环的第一个分号后面的语句,就是循环条件判断。即i<3。在第一次循环结束后,i的值是1,那么1是小于3的,因此符合该条件,开始执行循环体内部的语句a[i] = i,这里,i的值是1,那么a[i]就是a[1]了,也就是数组a的第二个元素(即下标为1的元素),执行完以后,又跳回for循环的第二个分号后面了,执行i++,执行完i++以后,i的值从1变成了2。接着开始第三次循环。
如此往复,第三次循环结束以后,i的值变成了3,在执行第四次循环的时候,首先进入for循环的循环条件判断,也就是第一个分号后面的语句,i<3,这个时候i的值是3,3<3是不成立的,因此从这里开始跳出循环,第四次循环也就不执行了。
循环结束以后,数组a就变成这样了:a[0]=0,a[1]=1,a[2]=2。而i的值在此时为3。
自己一步一步写出来for循环的执行步骤就好了。
总结:
for(赋初值; 循环变量; 循环变量自增)
{
循环体;
}
这句语句的执行顺序是:
1.赋初值。
2.判断循环条件,若满足条件执行第3步,若不满足条件执行第6步。
3.执行循环体语句。
4.循环变量自增。
5.执行第2步。
6.跳出循环。
请问C语言中循环在基本类型和数组类型有什么不同吗?
循环与数据类型没有什么关联
C语言 循环语句数组赋值
这编程风格得改改
跟楼上一样,
最后一个for循环前 a[i+1] = c;