簡體   English   中英

下標值既不是數組也不是指針也不是向量

[英]subscripted value is neither a array nor a pointer nor a vector

我有如下代碼:

typedef struct widgest_s{
    int WidgetId;
    void *ItsPage;
}widget;

typedef widget Array_Type_Widget[3];

typedef struct Page_Type_s{
    bool PageActive;
    Array_Type_Widget Widgetlist;
    Array_PageKeyTable PageKeys;
}Page_Type;

void init_main_page(const Page_Type* page)
{

   Page_Type* loc = page;

   update_pagewidget(&loc, &MainPageWidget);
}

void update_pagewidget( void *page, WidgetPtr Ptr)
{
    Page_Type* loc_page = (Page_Type*)page;

    for (int i = 0; i<3; i++)
    {
        (*loc_page->Widgetlist)[i] = Ptr(i);
    }
}

我正在嘗試訪問小部件列表的數組。 Ptr 是回調 function ,它返回類型小部件。 所以在嘗試訪問小部件數組時,我在“(*loc_page->Widgetlist)[i] = Ptr(i)”行出現錯誤

在這個表達式中

*loc_page->Widgetlist

數組指示符Widgetlist被轉換為指向其第一個元素的指針。 因此,取消引用指針,您會得到一個不是數組的類型widget的 object。 因此,您可能不會將下標運算符應用於 object。

看來你的意思

loc_page->Widgetlist[i] = Ptr(i);

暫無
暫無

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

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