相关疑难解决方法(0)

我是否施放了malloc的结果?

这个问题,有人建议意见,我应该不会投的结果malloc,即

int *sieve = malloc(sizeof(int) * length);
Run Code Online (Sandbox Code Playgroud)

而不是:

int *sieve = (int *) malloc(sizeof(int) * length);
Run Code Online (Sandbox Code Playgroud)

为什么会这样呢?

c malloc casting

2318
推荐指数
27
解决办法
22万
查看次数

制作一个数组来保存C中的字符数组

我的C现在不仅仅是生锈,所以我没有创造出我认为应该非常基本的东西.

允许我将字符数组称为此帖子的字符串.它会让我和你都清楚.

我所拥有的是一个可以容纳1个或更多字符串的数组.例如{"ab","cd","ef"}.我想创建另一个数组来存储字符串数组的多个版本.所以像{{"ab","cd","ef"},{"gh","ij"},{"kl"}}.

我现在拥有的是:

char *arrayOfStrings[50]; // a single array to hold multiple strings
char **arrayOfArraysOfStrings[10]; // array to hold multiple snapshots of arrayOfStrings
Run Code Online (Sandbox Code Playgroud)

字符串数组随着时间的推移而变化,我使用字符串数组数组来基本保存arrayOfStrings的历史快照.当我需要访问数据的快照数组时,我的问题出现了.这是我必须将内容放入快照数组的代码:

arrayOfArraysOfStrings[input_index] = arrayOfStrings; // you can assume input_index is updated correctly, I've already checked that.
Run Code Online (Sandbox Code Playgroud)

这似乎是不正确的,因为当我尝试访问并打印出快照数组的内容时,它只打印出来自最新的arrayOfStrings的信息.我想要的想法是将arrayOfChars所指向的地址存储在快照数组的一个条目中,以便我以后可以访问它.

现在,访问快照数组中的条目是这样完成的:

arrayOfArraysOfChars[historicalIndex][indexOfTargetChar]
Run Code Online (Sandbox Code Playgroud)

我想回答几个问题:

  1. 我概述的方法是否适用于我正在尝试做的事情,还是我的整体逻辑存在缺陷?
  2. 我当前的代码出了什么问题,如何解决?
  3. 有没有更好的方法来做到这一点,如果是这样,数组的初始化,数组的添加和数组的读取如何工作?

--edit 4/18--部分问题在于我在arrayOfArraysOfStrings中设置指针指向arrayOfStrings指向的相同内容.这是糟糕的,因为arrayOfStrings被编辑.我需要一些方法来复制2D数组...最好是通过简单地为arrayOfStrings分配一个新的内存块来指向.

c arrays character-arrays

15
推荐指数
3
解决办法
6万
查看次数

C:如何将双指针传递给函数

当我将双指针传递给函数以初始化内存时,我遇到了分段错误

int main()
{
    double **A;
    initialize(A, 10, 10);
 ......
}

void initialize(double **A, int r, int c)
{
   A = (double **)malloc(sizeof(double *)*r);
   for(int i = 0; i< r; i++) {
        A[i] = (double *)malloc(sizeof(double) *c);
        for(int j = 0; j < c; j++) {
            A[i][j] = 0.0;
        }
   }
}
Run Code Online (Sandbox Code Playgroud)

如何将双指针传递给函数.....

c function segmentation-fault

14
推荐指数
2
解决办法
5万
查看次数