请问一下,下面这段c代码为什么输出是
#include <stdio.h>
int main(int argc, char* argv)
{
int a[3] = {0,1,2};
printf("a[2] = %d\n2[a] = %d",a[2],2[a]);
return 0;
}
我想知道2[a]究竟代表什么意思?听说有的面试会问到这种语言细节的理解。
谢谢!
和a[2]是同一个意思吧
你编译不报错吗?如果不报错应该是2*a的地址了。
首先说下a[2]和2[a]是一个意思。但是我们平时用第一种表示方法。
a[2] =*(a+2);
2[a]=*(2+a);
所以他们的意思一样,其实数组的底层就是这样的,基于我们理解,我们就用下标访问或表示。
和2[a]一样的,就是写法的区别
一样的,都是代表数组的第三个元素,指针偏移两个int大小的字节后,指向第三个元素地址
别纠结这种,项目中要是有人这样写,会被人打死吧,我想。老玩一些奇技淫巧对编程没有意义。
就是写法上的问题,a[2]和2[a]是一个意思
一样的,都是代表数组的第三个元素,指针偏移两个int大小的字节后,指向第三个元素地址
就是写法上的问题,a[2]和2[a]是一个意思
2[a]没有这么表示过
数组名不能放括号中吧
虽然不常见,但是a[2]和2[a]是一个意思,不过最好不要这样用,编程还是要规范一些,有一定的标准。
这代码看着费劲,就是看着逼格高点,
a[2]和2[a]在C语言里是一个意思。
a[2] =*(a+2);
2[a]=*(2+a);
记住就可以啦,这种用法就在底层编程里经常使用,比如操作系统内核编程时,平时一般不用的,虽然用着也没问题。
建议学一下汇编,在汇编里 2[a]就是[a+2]的意思
是的a[2],2[a]都指向的是一个地址。