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

C語言指針筆試題深度解析:多級指標與自增運算

     編輯:C 語言入門

題目代碼


#include 
int main() {
    char *a = "Aliyun";
    char **b = &a;
    *b = "programming test";
    char *c = ++a;
    a = "talents.";
    printf("%c\n", *++c);
    return 0;
}

逐步執行分析

語句操作狀態變化
char *a = "Aliyun";a 指向常量區 "Aliyun"a → "Aliyun"
char **b = &a;b 指向變數 ab → a → "Aliyun"
*b = "programming test";解引用 b 即 a,指向新常量a → "programming test"
char *c = ++a;a 先自增(指向 'r'),c 指向 'r'a → "rogramming test", c → "rogramming test"
a = "talents.";a 指向新常量,c 不受影響a → "talents.", c → "rogramming test"
printf("%c", *++c);c 自增指向 'o',輸出 'o'輸出 o

關鍵點總結

  1. char **b = &a:b 是指向指標的指標,存儲 a 的地址。
  2. *b = ... 修改的是 a 的值(地址),不影響 b 本身。
  3. ++a 是指標算術:a 移向下一個 char(+1 字節)。
  4. c 複製的是 ++a 後的地址,後續 a 變更不影響 c。
  5. *++c:先移動 c,再解引用取字符。

驗證結果

GCC 編譯運行輸出 o,與分析一致。

考試避坑指南

  • 區分 指標的指標 與 二維數組。
  • 字符串常量不可修改,指標只能指向新常量。
  • 指標自增步長由基類型決定(char* +1 字節,int* +4 字節)。
  • 前綴 ++p 先增後用,後綴 p++ 先用後增。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved