指针混乱

时间:2014-01-12 08:36:22

标签: c pointers

received_data是长度为256的全局 char array。它包含偏移rx_pos_p的字符串,即received_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

2 个答案:

答案 0 :(得分:4)

你需要这样做:

*mem = &received_data[rx_pos_p];

您想要在指针指针中返回指针,因此您必须取消引用它。

答案 1 :(得分:1)

  

mem应该是什么类型,即** mem或* mem?

因为mem是指向指针的指针 * mem是指向字符的指针(例如数组的第一个字符的地址)
** mem是一个字符,相当于(* mem)[0]