用C语言打印字符串,指针算术包括数组、整数和指针



有三种结构;数组ab以及指针c:

c --------------------------.
                            |
                            V
       ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
a --> | a | | | | | b | i | g | | | r | i | d | e | |
       ´´´ ´´´ ´´´ ´´´ ´´´ ´´´ ´´´ ´´´ ´´´ ´´´ ´´´ ´´´ ´´´ ´´´ ´´´
       ___ ___ ___ ___ ___ ___ ___
b --> | F | l | y | i | n | g | |
       ´´´ ´´´ ´´´ ´´´ ´´´ ´´´ ´´´

这是代码:

int main(){
   char a[3][5]={"a", "big", "ride"};
   char b[]="Flying";
   char *c=*(a+1);
   puts(b+(c-*a)-2);
   return 0;
}

现在我不能理解的是表达式b+(c-*a)-2。有人能善良地把它打破吗?

  • CCD_ 5与CCD_。换句话说,如果(c-*a)-2是到串b的偏移,则puts(b+(c-*a)-2)将从(c-*a)-2偏移处的位置开始打印串b
  • c被分配给*(a+1),或*(&(a[1])),或简单地分配给指向"big"a[1]
  • 计算图表上的平方,得出c-*a的值(它是5)
  • b[5-2]就是"ing"

免责声明:如果有人试图在我的公司签入此类代码,他将不再为我们工作。

相关内容

  • 没有找到相关文章

最新更新