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

C++ printf("%s", *ptr) 錯誤:字串指標解參考導致崩潰

     編輯:程式設計綜合問答

錯誤代碼

printf("%s", (*st.getName()));

st.getName() 回傳 char*(指向字元陣列開頭),但程式寫成 *st.getName() 解參考成 char,再隱性轉為 char* 傳給 %s,導致存取無效位址。

正確寫法

printf("%s", st.getName());   // 直接傳指標
// 或
printf("%s", st.getName().c_str()); // 若回傳 std::string

原理說明

  • %s 期望 char*(以 null 結尾的字串起始位址)。
  • *ptr 取得的是第一個字元 char,若當成位址會指向極低記憶體區,觸發 Segmentation Fault。

延伸提醒

若 getName() 回傳 std::string,必須呼叫 .c_str() 取得 C 風格字串指標;若回傳 char*,直接使用即可。

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