首頁 > 後端開發 > C++ > C 中 `*ptr`、`*ptr`、`*ptr` 和 `(*ptr)` 有什麼不同?

C 中 `*ptr`、`*ptr`、`*ptr` 和 `(*ptr)` 有什麼不同?

Linda Hamilton
發布: 2024-12-11 03:03:12
原創
862 人瀏覽過

What's the Difference Between `*ptr  `, `*  ptr`, `  *ptr`, and `(*ptr)  ` in C?

指針表達式:導航ptr 、 ptr 和*ptr

這些指針在C 編程中經常表達式遇到並且可能很難理解。詳細解釋如下:

1. *ptr

  • 優先權: *(間接)的優先權高於(增量)。
  • 表達式值: 計算到 ptr 之前指向的值遞增。
  • 副作用: 將 ptr 增加一個記憶體單位。

範例:

int a = 5;
int *ptr = &a;

*ptr++; // evaluates to 5, then increments ptr to point to the next integer
登入後複製

2. * ptr

  • 優先順序:(增約量)和*(間接)具有相同的優先權。
  • 表達式值: 求值到 ptr 之後指向的值遞增。
  • 副作用: 將 ptr 增加一個記憶體單位。

範例:

int a = 5;
int *ptr = &a;

*++ptr; // evaluates to 6 (a++) and increments ptr
登入後複製

3. *ptr

  • 優先順序:(增大🎜>
  • 關聯性: 右-向左。
  • 表達式值: 增加 ptr 指向的值。
  • 副作用: 無。

範例:

int a = 5;
int *ptr = &a;

++*ptr; // increments a to 6
登入後複製

4. (*ptr)

  • 優先順序:
  • 優先順序:。括號覆蓋優先權規則。
  • 表達式值: 計算為取消引用的值遞增之前的 ptr。

側面效果:

增加解除引用的數值。
int a = 5;
int *ptr = &a;

(*ptr)++; // evaluates to 5, then increments *ptr to 6
登入後複製

範例:請注意,

ptr、 ptr 和ptr 可能會崩潰,如果ptr 是陣列標識符,而如果ptr 指向字串,則(ptr) 可能會崩潰字面意思。

以上是C 中 `*ptr`、`*ptr`、`*ptr` 和 `(*ptr)` 有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板