#include <stdio.h>
char *c[]={"ENTNG", "NST","AMAZI","FIRBE"};
char** cp[]={c+3, c+2, c+1, c};
char ***cpp= cp;
int main() {
printf("%s",**++cpp);
printf("%s ",*--*++cpp+3);
printf("%s",*cpp[-2]+3);
printf("%s",cpp[-1][-1]+1);
}
最佳答案
char *c[]= {
"ENTNG",
"NST",
"AMAZI",
"FIRBE"
};
*c[]
评估为一个字符,因此 c []
指向字符并且 c
是一个指针数组-特点。 c
的元素已初始化为指向
字符数组
"ENTNG", "NST", "AMAZI" and "PIRBE"
.
char** cp[]={c+3, c+2, c+1, c};
**cp[]
计算出一个字符,*cp[]
是一个指向字符的指针,cp[]
是一个指向字符指针的指针。因此 cp
是指向字符指针的指针数组。 cp
的元素已被初始化为指向 c
的元素。
char ***cpp= cp;
***cpp
计算出一个字符,**cpp
指向一个字符,*cpp
指向一个指针字符,cpp
指向一个指向字符的指针。
*(*(++cpp)); // Increment cpp and then follow the pointers
Op : "AMAZI"
(*(--(*(++cpp))))+3; // Increment cpp,follow the pointer to cp[2],
// decrement cp[2],follow the pointer to c[0],
// index 3 from the address in c[0].
Op : "NG "
(*(cpp[-2]))+3; // Indirectly reference - 2 from cpp yielding cp[0],
// follow the pointer to c[3];
// index 3 from the address in c[3].
Op : "BE"
(cpp[-1][-1])+1 // Indirectly reference -1 from cpp yielding cp [1],
// indirectly reference - 1 from
// cp[1] yielding c[1],index 1 from the address in c[1].
Op : "ST"
输出将是AMAZING BEST
来源:C 语言拼图书
关于有人可以告诉我给定代码中第二个 printf 语句中的引用流吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4638527/