簡體   English   中英

指針混亂

[英]Pointer Confusion

received_data是一個全球性的 char array長度256的它包含一個串在偏移rx_pos_preceived_data[rx_pos_p] 我想通過指針mem返回此字符串的地址,但是我認為我在犯錯。 我寫的功能如下:

uint8_t get_bytes(char **mem, uint8_t len){// Be watchful pointer to a pointer
        if(bytes_received() >= len){
            mem = &received_data[rx_pos_p]; //(char *)( received_data + rx_pos_p );

            return 0;
        }
        else
        return FOO;
    }

mem的類型應該是什么,即**mem*mem

您需要做:

*mem = &received_data[rx_pos_p];

您要在指針指針中返回指針,因此必須取消引用它。

mem的類型應該是什么,即** mem或* mem?

由於mem是指向指針的指針* mem是指向字符的指針(例如數組的第一個char的地址)
** mem是一個字符,等效於(* mem)[0]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM