首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

引用数组元素解决方法

2012-03-11 
引用数组元素若有以下定义和语句,则对w数组元素的非法引用是()intw[2][3],(*pw)[3];pw=w;①*(w[0]+2)②*pw[2

引用数组元素
若有以下定义和语句,则对w数组元素的非法引用是(   )
int   w[2][3],(*   pw)[3];   pw=   w;
①*(w[0]+2)               ②*pw[2]              
③pw[0][0]                   ④*(pw[l]+2)
请给出解题过程.

[解决办法]
2是错误的 ,首先我觉得要理解int (*p)[3]; p = w;这里的p是一个指针,它指向一个含有3个元素的数组.p=w,则把w这个[2][3]的首地址赋给p。我们逐个分析:
假使int w[2][3] = {{1,2,3}, {4,5,6}};

1. *(w[0]+2) --- 这里w[0]=&w[0][0],所以w[0]+2就是w[0][2]的地址了,所以其值应该为3;
2. *pw[2] --- pw[2]可以理解为w[2]+0,所以他的值是&w[2][0],但是我们可以看到,在数组w中已经越界了.所以这个是错误的.
3. pw[0][0] --- 这里的pw[0][0]=w[0][0]=1;
4. *(pw[l]+2) --- pw[1]+2 = &w[1][0]+2 所以取值以后就是6了

综上所述,2是错误引用.

热点排行