亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

指向指針的指針在C中是如何工作的?

指向指針的指針在C中是如何工作的?

C
喵喵時光機 2019-06-21 13:47:34
指向指針的指針在C中是如何工作的?指向指針的指針在C中是如何工作的?你什么時候用?
查看完整描述

3 回答

?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

讓我們假設一臺具有8位地址的8位計算機(因此只有256字節的內存)。這是內存的一部分(頂部的數字是地址):

  54   55   56   57   58   59   60   61   62   63   64   65   66   67   68   69

+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+

|    | 58 |    |    | 63 |    | 55 |    |    | h  | e  | l  | l  | o  | \0 |    |

+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+



您可以在這里看到,在地址63處,字符串“hello”開始。所以在這種情況下,如果這是內存中唯一出現的“Hello”,
const char *c = "hello";

..定義c為指向(只讀)字符串“hello”的指針,因此包含值63。c本身必須存儲在某處:在上面的示例中,位置為58。當然,我們不僅可以指向字符,還可以指向其他指針。例如:

const char **cp = &c;

現在cp指點c,也就是說,它包含的地址是c(58)。我們還可以更進一步??紤]:

const char ***cpp = &cp;

現在cpp存儲.的地址cp..所以它有值55(基于上面的例子),您猜到了:它本身存儲在地址60。


至于為什么一個人使用指向指針的指針:

  • 數組的名稱通常會產生第一個元素的地址。因此,如果數組包含類型為

    t

    ,對數組的引用具有以下類型

    t *

    ..現在考慮一個類型數組的數組。

    t

    :對這個2D數組的引用自然會有類型

    (t *)* = t **

    ,因此是指向指針的指針。
  • 盡管字符串數組聽起來是一維的,但實際上是二維的,因為字符串是字符數組。因此:

    char **.

  • 函數

    f

    將需要接受類型的參數。

    t **

    如果要更改類型的變量

    t *.

  • 還有很多其他的原因在這里無法列舉。


查看完整回答
反對 回復 2019-06-21
  • 3 回答
  • 0 關注
  • 623 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號