繁体   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