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

C語言 * 操作符全解析:乘法、指針聲明、解引用三重身份

     編輯:C 語言問答

三大身份速查

上下文代碼示例含義
二元運算符int area = 12 * 23;整數乘法
聲明符修飾int *p, *q;聲明指向 int 的指針變量 p、q
一元運算符int val = *p;解引用:獲取 p 指向地址存儲的值

深度解析

1. 指針聲明的「右結合」規則

int *p;      // p 是指針,*p 是 int
int *p, q;   // p 是指針,q 是 int(常見陷阱)
int *p, *q;  // 正確:兩個都是指針

建議:一行聲明一個變量,或統一寫成 int* p, *q;(風格爭議大,團隊統一即可)。

2. 解引用與成員訪問


struct Node { int val; struct Node* next; };
struct Node* head = malloc(sizeof(*head));
head->val = 42;        // 等價於 (*head).val = 42;
*head = (struct Node){42, NULL};  // 整體賦值

3. 多級指針


int a = 10;
int *p = &a;
int **pp = &p;
printf("%d\n", **pp);  // 10

常見面試題:const int* p vs int* const p


const int* p;      // 指向常量的指針:不可通過 p 修改值,p 可變
int* const p;      // 常量指針:p 不可變,可通過 p 修改值
const int* const p;// 兩者皆不可變

口訣:const 修飾右側的實體(若右無則修飾左側)。

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