2D数组的C指针算法

M.A*_*ine 0 c pointers

// strings is a 2D array (each string is 11 bytes long)
char strings[][11] = {"0123456789", "2222244444", "3333366666"};   

printf("String 3 Character 2 is %c\n", strings[2][1]);
Run Code Online (Sandbox Code Playgroud)

如何使用指针算法而不是strings[2][1]?来编写此print语句?

Jer*_*fin 13

在C中,a[b]是相同的*(a+b)(因为加法是可交换的,这意味着它也相当于b[a].为国际混淆C代码竞赛撰写的人经常依赖于此,使用类似的东西x["string"];.不用说,最好避免那种除非你故意是邪恶的,否则......

编辑:对于任何确定他们对该主题的理解是否符合要求的人,可以随意分析以下内容并在运行之前正确预测其输出:

#include <stdio.h>

char *c[] = { "ENTER", "NEW", "POINT", "FIRST" };
char **cp[] = { c+3, c+2, c+1, c };
char ***cpp = cp;

main()
{
    printf("%s", **++cpp);
    printf("%s ", *--*++cpp+3);
    printf("%s", *cpp[-2]+3);
    printf("%s\n", cpp[-1][-1]+1);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果内存服务,该特定代码的信用(责备?)将归Thad Smith所有.