哪款增高药最有效:问一个比较◆特殊◆的整型数组问题(虽然是只有3行的C语言程序,可是却不简单)

来源:百度文库 编辑:高考问答 时间:2024/05/05 15:27:19
main()
{
int a[10],i=0;

while(i<10)
scanf("%d",a+(i++));
}
我想请问高手:这段代码里面的第三行,勉强可以理解成是指针移位运算,可是这段代码里面并没有定义任何的指针变量,却直接用“a+(i++)”来逐个接收数组元素,为什么这么做可行,难道,在C语言里面,所有的数组,都可以进行指针移位运算,不需要再用指针来指向它吗?

希望有高手可以做出全面、详细、正确的解释

■■■■■特别注意■■■■■
请不要把网上的C语言教程,从第一课到最后一课都粘过来(请不要粘些多余的教程过来,最好能用阁下的知识给出详细的解释)

scan的第二个参数是存储输入的<地址>,是不是指针指向的地址或是某个表达式的值是无关的,极端的情况你可以直接赋值常数比如0x01这样scan会把值存入内存的0x01处,a+(i++)这个表达式的值就是这样一个地址,至于这个地址是怎么赋给scan的(用指针?直接赋?),scan根本不考虑.

在C中数组名其实就可以理解为一个该类型的指针,你可以用读取指针的方式读取其值,但要注意的是,你在赋值的时候就不能这么用了,还要用数组,不然会出现内存访问错误

a是数组的首地址,a+0 是第一个元素的地址,a+1 是第二个元素的地址,a+2是第三个元素的地址

数组变量是挨个存放在内存中的(a0,a1,a2,a3.....),
当你要引用数组变量时,实际上是影射的a0的地址,在循环当中i是从0到9,a+(i++)就等于a+0,a+1,a+2...
这样就会在内存当中逐个把变量取出来

数组名是个指针常量,可以拿来间接引用或作为参数,但是作为常量它本身是不可变的,所以有时需要另设指针变量指向数组~

数组符号a就是一个常量指针。
它指向a[0]的地址
不能当左值,当右值还是可以的。
既然是指针,当然可以加了