若有定义int a[3][4];不能表示a[1][1]的是
A.*(a[1]+1) B.*(&a[1][1]) C.(*(a+1))[1] D.(a+5)
详解谢谢
只有A是错的,B、C、D都是正确的。
先搞清楚如果定义了inta[n][m],那么a就表示是一个指向有m个元素的数组指针。
下标操作符优先于解除引用操作符,所以*(a+1)[1]就是*((a+1)[1]), (a+1)[1]就是*(a+1+1)也就是a[2],那么*(a+1)[1]就是*(a[2])也就是a[2][0],很显然不是a[1][1]。
而D选项*(a+5)就是a[5],这是个行地址,而且是越界后的地址。也不是a[1][1] ,*(a[0]+5)或者*(*a+5)才是a[1][1]
扩展资料:
从第二项开始,每个偶数项的平方都比前后两项之积多1,每个奇数项的平方都比前后两项之积少1。如:第二项 1 的平方比它的前一项 1 和它的后一项 2 的积 2 少 1,第三项 2 的平方比它的前一项 1 和它的后一项 3 的积 3 多 1。
(注:奇数项和偶数项是指项数的奇偶,而并不是指数列的数字本身的奇偶,比如从数列第二项 1 开始数,第 4 项 5 是奇数,但它是偶数项,如果认为 5 是奇数项,那就误解题意,怎么都说不通)
参考资料来源:百度百科-斐波那契数列
对的,能解释一下么
追答先搞清楚如果定义了inta[n][m],那么a就表示是一个指向有m个元素的数组指针
追问不是m×n个元素吗
追答对单独a的而言
追问不是这样吗
单独的a又是什么
追答是
追问那m+1乘n+1又是什么,你说单独的a是什么
追答a[0]=a+1
这个明白不?
a[1]=a+1
上面打错了
追问知道
追答a[1]你的理解是什么?
追问就是一个数组,然后包含两个数
是这样吗,还是一个地址?
追答它是一个地址还是一个值?
追问应该是地址
*就是取地址里的值对吗
追答是的,你理解a[1]的话,那么这道题应该没有问题啊
对
追问不对,那&又是什么,也是地址吧
追答&是取地址
a,a[0]的区别能不能区分?
它们都是指针,但类型却不同
追问B选项*(&a[1][1])a[1][1]是取地址那为什么还要一个&取地址
对了,a[1][1]是地址
再加一个&是取地址
追答B直接去了一个值的地址,再加个*就是值了
B直接取了一个值的地址,再加个*就是值了
a[1][1]是值
追问那 c呢
c中a+1是地址吗
a是地址,a[1]是数组地址吧
追答是
追问为什么c中没有取地址符号?
哎,我真是什么都不知道
追答*(a+1)
追问是不是要不要&都无所谓
追答&是个取地址符,它负责把一个值的地址取出来.
追问嗯嗯,谢谢
追答我觉得你还没搞明白,哈哈~可能我表达不清
追问是哒,你说对了~还有我查了一遍百度都没找到数组a,a[x]是表示地址还是数值什么
刚才那题
若有定义int a[3][4];不能表示a[1][1]的是
A.*(a[1]+1) B.*(&a[1][1]) C.(*(a+1))[1] D.(a+5)
中&到底是干什么的
要不要是不是都无所谓啊选项c中的&
本回答被提问者采纳