首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C語言字符串指針移動輸出的奇妙效果

     編輯:關於C語言

C語言字符串指針移動輸出的奇妙效果

代碼


輸出結果

ABCDEF
BCDEF
CDEF
DEF
EF
F

核心機制解析

  1. char *s = "ABCDEF":s指向字符串常量首地址('A'處)
  2. while (*s):*s非\0即真,指針未到字符串末尾繼續循環
  3. printf("%s\n", s++):
     • %s從s指向位置輸出至\0
     • s++後置遞增,本次調用用舊值,下次循環s指向下一字符

關鍵知識點

  • 字符串指針可隨意移動:s++、s--、s += n均合法,控制輸出起始位置
  • 後置遞增陷阱:printf("%s", s++)輸出當前位置,之後指針前進
  • 字符串常量不可修改:*s = 'X'未定義行為,但s++移動指針本身合法
  • 反向移動同理:若s指向中間,s--可向前輸出

進階變體

 0; len--)
    printf("%.*s\n", len, s);  // %.*s 輸出指定長度

總結

字符串指針s本質是char*,支持指針算術運算。while(*s) printf("%s\n", s++)利用指針遞增遍歷與%s從指針處輸出到\0的特性,以極簡代碼實現了所有後綴輸出——這是C語言指針靈活性的經典展示。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved