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

C 語言指針進階:常量指針 vs 指針常量的區別與初始化示例

     編輯:程式設計疑難解答

兩種聲明對比

聲明含義可修改指針值可修改指向內容
char *const p指針常量(指針本身不可變)❌✅
char const *p / const char *p常量指針(指向內容不可變)✅❌

代碼示例

char str1[] = "hello";
char str2[] = "world";

// 1. 指針常量:p 必須初始化,之后不能指向别处
char *const p1 = str1; 
*p1 = 'H';        // OK:修改內容 → "Hello"
// p1 = str2;     // 編譯錯誤:不能改變指針指向

// 2. 常量指針:可指向不同地址,但不能通過它修改內容
const char *p2 = str1;
printf("%s\n", p2); // OK:讀取
// *p2 = 'H';      // 編譯錯誤:不能修改內容
p2 = str2;         // OK:改變指向 → "world"

// 3. 組合:既不能改指向,也不能改內容
const char *const p3 = str1;

記憶口訣

const 修飾誰,誰就不可變。const 在 * 左邊修飾內容,右邊修飾指針。

編譯器差異提示

部分老舊編譯器(如 VC6.0)對字符串字面量賦值給非 const char* 只給警告,現代編譯器(GCC、Clang、MSVC 新版)嚴格要求 const char* 接收字符串字面量。

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