在C中的数组末尾附加一个浮点

在C中的数组末尾附加一个浮点,c,arrays,C,Arrays,我试图在C中的数组末尾附加一个浮点。下面是我使用的代码: #include <stdlib.h> #include <stdio.h> int main() { float timestamps[] = {0,3,2,1,5}; float ISI[25]; int i,j; for (i = 0; i<5; i++ ) { for (j=0;j<5;j++) { flo

我试图在C中的数组末尾附加一个浮点。下面是我使用的代码:

#include <stdlib.h>
#include <stdio.h>

int main()
{
    float timestamps[] = {0,3,2,1,5};
    float ISI[25];
    int i,j;
    for (i = 0; i<5; i++ )
    {
      for (j=0;j<5;j++)
        {
          float diffTimestamp = timestamps[j] - timestamps[i];
          //remove points greater than 1 sec and less than -1sec
          if((diffTimestamp<=1.0)&&(diffTimestamp>=-1.0)){
              //append the diffTimestamp to ISI array 
          }
          else
            continue;
        }
   }
    return 0;
}
#包括
#包括
int main()
{
浮点时间戳[]={0,3,2,1,5};
浮动ISI[25];
int i,j;

对于(i=0;i所以当您初始化数组时:

float timestamps[] = {0,3,2,1,5};
实际上,您所做的是分配一个大小正好相同的内存块。与脚本语言不同,本例中的数组不是数据类型,而是一个连续保存了5个浮点的内存块

应该做的是,你应该使用一个可以让你实现你在这里尝试的东西


编辑:如果您知道需要的内存量有多大,也可以使用malloc。

因此,在初始化阵列时:

float timestamps[] = {0,3,2,1,5};
实际上,您所做的是分配一个大小正好相同的内存块。与脚本语言不同,本例中的数组不是数据类型,而是一个连续保存了5个浮点的内存块

应该做的是,你应该使用一个可以让你实现你在这里尝试的东西


编辑:如果您知道需要的内存量有多大,您也可以使用malloc。

//将diffTimestamp附加到ISI数组中,
ISI
数组在哪里?它只是一个值为
NULL
的指针。我已经更新了它。您可以使用
fabs()
来简化条件:
if(fabs)(diffTimestamp)@deatracer
float-ISI[25]
声明一个float[25个元素]的数组。这是使用固定大小创建的,不能进行
realloc
运算。如果要动态添加到数组,实际上只需调整指针变量指向的内存块大小。您可以使用类似
size\t size=25;float*array=malloc的值来初始调整内存块大小,以容纳
25 float
(size*sizeof*array);
(别忘了验证分配)。跟踪添加的浮点数,以及当达到25时,void*tmp=realloc(array,size*2*sizeof*array);if(tmp)array=tmp;
//将diffTimestamp附加到ISI数组,ISI
数组在哪里?它只是一个值为NULL的指针。我已经更新了它。您可以使用
fabs()
来简化条件:
如果(fabs(diffTimestamp)@deatracer
float ISI[25]
声明一个float[25个元素的数组。这是使用固定大小创建的,不能进行
realloc
运算。如果要动态添加到数组,实际上只需调整指针变量指向的内存块大小。您可以使用类似
size\t size=25;float*array=malloc的值来初始调整内存块大小,以容纳
25 float
(size*sizeof*array);
(别忘了验证分配)。跟踪添加的浮点数,以及当达到25时,void*tmp=realloc(array,size*2*sizeof*array);if(tmp)array=tmp;
ISI
在最坏的情况下可能是
时间戳大小的两倍,即25只需声明ISI的最大大小,并保留上次写入位置的计数器。array是一种数据类型。问题是您无法检查它的bounds@deathracer“将
时间戳的大小增加一倍
数组”可能是
2*5-floats=10个float
(不是25个)--或者我错过了新的数学?链表有其特殊的用例,但我一般不会推荐它。如果您需要快速索引访问,并且插入/追加相对较少(通常是这样),请使用
malloc()
realloc()实现您的“动态数组”
ISI
在最坏的情况下,可以是
时间戳的两倍大小
数组,即25只需声明ISI的最大大小,并保留上次写入位置的计数器。数组是一种数据类型。问题是您无法检查它的大小bounds@deathracer“将
时间戳的大小增加一倍
数组”可能是
2*5-floats=10个float
(不是25个)--或者我错过了新的数学?链表有其特殊的用例,但我一般不会推荐它。如果您需要快速索引访问,并且插入/追加相对较少(通常是这样),请使用
malloc()
realloc()实现您的“动态数组”