簡體   English   中英

使用指針算法在C中打印字符串,包括數組,整數和指針

[英]Printing a string in C with pointer arithmetic including arrays, integers and pointers

有三種結構; 數組ab以及指針c

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

這是代碼:

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 有人可以善良並打破它嗎?

  • b+(c-*a)-2&b[(c-*a)-2] 換句話說,如果(c-*a)-2是字符串b的偏移量,則puts(b+(c-*a)-2)將從puts(b+(c-*a)-2)的位置開始打印字符串b (c-*a)-2偏移。
  • c被指定為*(a+1)或*(&(a [1])),或簡稱a[1] ,指向"big"
  • 計算圖表上的方塊以找到c-*a的值(它是5)
  • b[5-2]"ing"

免責聲明:如果有人試圖在我公司辦理此類代碼,他將不再為我們工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM