簡體   English   中英

C指針malloc里面的函數調用

[英]C pointers malloc inside function call

我有這樣的等級制度:

main()
{
    int i;
    myStruct *devices = NULL;
    myFunc1(&devices);

    for (i = 0; i < 5; i++)
    {
        printf("MAC: %s, Name: %s, COD: %s\n\r", devices[i].field1, devices[i].field2, devices[i].field3);
    }
}

void myFunc1(myStruct **devices)
{
    myFunc2(devices);
}

void myFunc2(myStruct **devices)
{
    int i;
    *devices = malloc(sizeof(myStruct) * 5);

    for (i = 0; i < 5; i++)
    {
        (*devices[i]).field1 = "test1";
        (*devices[i]).field2 = "test2";
        (*devices[i]).field3 = "test3";
    }
}

在主要當我訪問i = 0的設備[i]時,它沒問題,但是當i> 0時發生SegFault,我無法理解如何正確訪問它。

由於運算符優先級 ,表達式*devices[i]被解析為*(devices[i]) ,這不是你想要的。 您想要使用(*devices)[i]

我很確定

(*devices[i])

應該

((*devices)[i])

由於[]運算符優先於*運算符。 您想要取消引用指針,然后訪問該數組。

我認為問題在於你正在調用錯誤的結構。 首先嘗試替代

*devices[i]).field1

*devices[i])->field1

暫無
暫無

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

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