Asutorufaのブログ

こんにちは

c语言数组输出的另一种方法

发布于 2017-12-10|更新于: 2017-12-10|分类 Program

今天看到这样一种写法,原文链接:一个有趣的C语言程序

#include <stdio.h> int main(){    int a = 1;    int x[5]={1,2,3,4,5};    printf("%d",a[x]);    return 0;}
output: 2


int x[5],x实际上保存的是这个数组首元素的地址也就是&x[0].
a[x]的等效写法是*(a+&x).因为上面说了x实际上是x[0].
所以可以进一步写成*(a+&x[0]),又因为a=1所以可以替换成*(&x[0]+1),也就是x[1].
所以就是x[1]对应的值:2

由此我又想到了二位数组

#include <stdio.h> int main(){    int a = 1;    int x[2][2]={{1,2},{3,4}};    printf("%d",a[a[x]]);    return 0;}
output: 4

感觉好神奇,而且在之前不知道在哪看到__c语言的数组其实就是指针的合集__,而且最近要用链表,更觉得链表和数组差不多.

0 条评论

©2026Asutorufa