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

C 語言指標進階:const 修飾位置、字串兩種形式、函數指標陣列

     編輯:關於C語言

前言

指標進階主題:`const` 修飾位置語意差異、字串字面值 vs 字元陣列、函數指標陣列應用。

一、字串兩種形式

形式範例儲存區可修改整體賦值
字元陣列`char name[32] = "zhangsan";`堆疊是`strcpy(name, "lisi");`
字元指標`char *name = "zhangsan";`常數區否 (崩潰)`name = "lisi";` (改指向)

注意:`char *name; scanf("%s", name);` 未初始化 → 未定義行為;`strcpy(name, "lisi")` 若指向字串常值 → 崩潰。

二、const 修飾位置語意

const int *p;       /* 指向常數整數:不可透過 p 修改值,p 可改指向 */
int const *p;       /* 等同上 */
int *const p;       /* 常數指標:p 不可改指向 (須初始化),可透過 p 修改值 */
const int *const p; /* 雙重常數:指向常數的常數指標,均不可改 */

口訣:`const` 在 `*` 左邊修飾「指向的值」;在 `*` 右邊修飾「指標本身」。

三、函數指標陣列

int add(int a, int b) { return a+b; }
int sub(int a, int b) { return a-b; }
int mul(int a, int b) { return a*b; }
int div(int a, int b) { return a/b; }

int (*ops[4])(int, int) = {add, sub, mul, div};  /* 函數指標陣列 */

int main() {
    for (int i = 0; i < 4; i++)
        printf("%d ", ops[i](10, 5));  /* 15 5 50 2 */
    return 0;
}

應用場景:狀態機、命令分發、回呼表、多態模擬。

總結

搞清 `const` 位置、字串儲存類別、函數指標陣列宣告語法,是邁向 C 語言專家的關鍵里程碑。

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