首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 語言 printf 輸出字符串指針誤用 *p 導致崩潰分析

     編輯:程式設計綜合問答

錯誤代碼


char *p = "47340";
printf("%s\n", *p); // 錯誤:%s 期望 char*,傳入 char (解引用后的字符)

原因

  • *p 解引用得到首字符 '4' (類型 char,整數提升為 int)。
  • printf("%s", ...) 期望 char* 指向以 \0 結尾的字符串。
  • 拿字符值 52 (ASCII '4') 當地址訪問內存 → 段錯誤/亂碼。

正確寫法


printf("%s\n", p);   // 輸出整串 "47340"
printf("%c\n", *p);  // 輸出首字符 '4'
printf("%c\n", p[0]); // 同義

核心概念

字符串在 C 中**以首字符地址 (指針) 代表整個字符串**。%s 接收地址,%c 接收字符值。

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