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

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

用于多級指針解引用?

用于多級指針解引用?

C++
MM們 2019-09-02 20:30:59
什么時候使用任何語言的指針要求有人使用多個指針,讓我們說一個三指針。什么時候使用三指針而不是只使用常規指針是有意義的?例如:char  * * *ptr;代替char *ptr;
查看完整描述

3 回答

?
瀟瀟雨雨

TA貢獻1833條經驗 獲得超4個贊

每個星應該被讀作“指針指向”所以


char *foo;

是“指針foo指向的字符”。然而


char *** foo;

是“指向指向指針foo的指針指向的字符”。因此foo是一個指針。在該地址是第二個指針。在指向的地址是第三個指針。取消引用第三個指針會產生一個char。如果這就是它的全部內容,很難為此做出很多貢獻。


不過,它仍然可以完成一些有用的工作。想象一下,我們正在編寫bash或其他一些過程控制程序的替代品。我們希望以面向對象的方式管理流程的調用...


struct invocation {

    char* command; // command to invoke the subprocess

    char* path; // path to executable

    char** env; // environment variables passed to the subprocess

    ...

}

但是我們想要做一些奇特的事情。我們想要一種方法來瀏覽每個子進程看到的所有不同的環境變量集。為此,我們env將調用實例中的每組成員收集到一個數組中env_list,并將其傳遞給處理該數組的函數:


void browse_env(size_t envc, char*** env_list);


查看完整回答
反對 回復 2019-09-02
?
茅侃侃

TA貢獻1842條經驗 獲得超22個贊

指針只是一個保存內存地址的變量。


因此,當您想要保存指針變量的地址時,可以使用指向指針的指針。


如果要返回指針,并且已經在使用返回變量,則會傳入指針的地址。然后該函數取消引用此指針,以便它可以設置指針值。即該函數的參數將是指向指針的指針。


多級間接也用于多維數組。如果要返回二維數組,可以使用三重指針。當將它們用于多維數組時,盡管在遍歷每個間接層時都要小心地進行強制轉換。


以下是通過參數返回指針值的示例:


//Not a very useful example, but shows what I mean...

bool getOffsetBy3Pointer(const char *pInput, char **pOutput)

{

  *pOutput = pInput + 3;

  return true;

}

你這樣稱呼這個函數:


const char *p = "hi you";

char *pYou;

bool bSuccess = getOffsetBy3Pointer(p, &pYou);

assert(!stricmp(pYou, "you"));


查看完整回答
反對 回復 2019-09-02
  • 3 回答
  • 0 關注
  • 490 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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