+ -
当前位置:首页 → 问答吧 → C 数组问题请教!

C 数组问题请教!

时间:2010-07-12

来源:互联网

假定ints数组在内存中的起始位置是100,整形值和指针长度都为4个字节。
int ints[20]={10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 140, 140, 150, 160, 170, 180, 190, 200}

int *ip = lits +3;

ints+4 =?  
&ints[4] =?
&ints + 4 =?
ints[-2] =?
ip =?   
ip + 4=?  
*ip + 4=?
ip[-2] =?  
&ip= ?
ip[-2]=?  
&ip = ?
&ip[4] = ?
&ip[4] =?
&ip+4  =?


希望能帮我解释一个答案怎么来的,比如 ip+4=44!  数组被这题给杀啊!  谢谢大家了!

作者: ckf513728912   发布时间: 2010-07-12

lits?是ints吗

作者: 宁戚大夫   发布时间: 2010-07-12

分清优先级就好了
*ip=40
*ip+4= (*ip)+4=44

作者: ubuntuer   发布时间: 2010-07-12

变量名不对。。。自己试试就知道了吧...

作者: biojingshui   发布时间: 2010-07-13

ip+4=44???


*ip+4才是44吧

作者: hellioncu   发布时间: 2010-07-13

这个很悲剧阿。

作者: SpringfieldKing   发布时间: 2010-07-13

这题,不知道是出题者那个什么,还是认为做题者那个什么

作者: mirnshi   发布时间: 2010-07-13

更正你一个错误:ip+4不等44,*ip+4才等于44
首先数组ints[20]是一个连续存储的内存

ints;表示取这个内存中的某个值。
ints;表示这段内存的起始地址,即ints==&ints[0];
地址是可以进行加减运算的
ints++,表示指向ints的下一个地址,即ints++=&ints[1];

int*ip = ints +3;
表示ip指向ints的第三个地址,即 ip==&ints[3];
*ip+4与ints[3]+4是一样的

所以*ip+4=44

作者: rune_zhang   发布时间: 2010-07-13

这些作业还是自己思考完成吧,都是些基本功。

作者: 没本   发布时间: 2010-07-13

数组?指针?指针?数组?数组值?指针值?数组值加?指针值加?数组指针偏移?

自己想吧,哈哈……………………

作者: jlccwss   发布时间: 2010-07-13