讨教下,为什么数组中i[3] == 3[i]

C语言 码拜 7年前 (2017-04-13) 973次浏览
最近在学c语言,讨教下大家
代码如下,最后输入两者都是100,问一下为什么3[i]也是100啊,看不太懂这种表示方式。
#include<stdio.h>
int main()
{
int i[] = {1,2,3,100};
printf(“3[i] = %i\n”,3[i]);
printf(“i[3] = %i\n”,i[3]);
return 0;
}
解决方案

10

A[B]
*(A+B)
*(B+A)
B[A]
//以上四行等价
"abc"[1]
*("abc"+1)
*(1+"abc")
1["abc"]
//以上四行等价
A[0]
*(A)
0[A]
//以上三行等价

40

看本人的这个帖子你就知道了:http://blog.csdn.net/paschen/article/details/47315449

10

引用:
Quote: 引用:
A[B]
*(A+B)
*(B+A)
B[A]
//以上四行等价
"abc"[1]
*("abc"+1)
*(1+"abc")
1["abc"]
//以上四行等价
A[0]
*(A)
0[A]
//以上三行等价

如上你所说的A[B]
*(A+B)
*(B+A)
B[A]
//以上四行等价
那*(A+B)中的b本人知道是偏移量,那是多少啊?也是一个Int值吗

其中有一个是指针,另外一个是数值。如:
char *p = NULL;
char *p1_1 = p + 1;
int  *p1_2 = p + 1;
char *p2_1 = 1 + p;
int  *p2_2 = 1 + p;
如上,你肯定明白 int 指针的那两行编译不过去的,除非强转。而且,运算结果其实也是和数值相加的那个指针类型是一样的,所以根本不存在歧义。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明讨教下,为什么数组中i[3] == 3[i]
喜欢 (0)
[1034331897@qq.com]
分享 (0)