簡體   English   中英

如何將 int 添加到 int**?

[英]How do I add int to a int**?

我正在用 C 編碼。

我收到以下變量作為參數int** list

我像這樣分配內存:

list = (int **)malloc(sizeof(int) * numberOfItems);

我正在遍歷另一個列表,我想向list變量添加一個整數。 這是我的代碼:

*list[i] = i;

我收到以下錯誤:

[1]    18404 segmentation fault  program

我做錯了什么?

盡管在 C++ 中是必需的,但沒有必要( 也不建議)在 ANSI C 中[m][c][re]alloc的返回值。所以你的第一條語句應該是:(注意sizeof語句的參數...... )

list = malloc(sizeof(* list) * numberOfRows);//create the first level of array of pointers

然后循環遍歷,正如您在帖子中指出的那樣,為第一個語句中創建的每個位置分配內存:

for(i=0;i<numOfRows;i++)
{
    list[i] = malloc(sizeof(int));
}

注意:感謝@MM 的評論,雖然沒有必要或通常建議(閱讀上面的鏈接)在 C 中轉換 malloc 的返回值,但您在原始帖子中提供的示例代碼提供了一個很好的說明,其中使用了投射聚光燈和立即暴露出錯誤的可能性。 即 cast: (int **)sizeof : int的參數不匹配。

正如@FiddlingBits 指出的那樣,我的分配方法不正確。

這是修復:

int *workList = (int *)malloc(sizeof(int) * hardworkingDwarfCount);
list = &workList;

和 :

workList[i] = i;

暫無
暫無

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

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