gpt4 book ai didi

c - 我如何通过指针将数组加载到函数并将它们用于该函数中的计算

转载 作者:太空宇宙 更新时间:2023-11-04 07:59:12 25 4
gpt4 key购买 nike

我试图通过使用指针使我的代码更专业。我正在使用 C 。我的目标是尽可能有效地使用指针。我有移动过滤信号值的功能。有 4 个过滤步骤,每个 od 包含 3 个值。 filta、filtb、filtc、filtd 并且有新的数据也需要转移。

这是我的工作代码。确实很笨重

float32_t*  FilterShift_inCapsulated( float32_t   xfilt1a_0,  float32_t  xfilt1a_1,  float32_t xfilt1a_2) 
{
//values area loading normal way

float32_t xfilt1a[3],shiftedvalues[15];
float32_t* shiftedvaluesP;

xfilt1a[0]= xfilt1a_0; // i am sending them to arrays
xfilt1a[1]= xfilt1a_1; //bc i want use them in "for" loop.
xfilt1a[2]=xfilt1a_2;


int8_t ix = 0;
for (ix = 0; ix <2; ix ++)
{
xfilt1a[ix] = xfilt1a[ix+1]; //index 1 of array shifts to 0
} //index 2 of array shifts to 1


shiftedvalues[0]=xfilt1a[0]; //need to take that values back
shiftedvalues[1]=xfilt1a[1];
shiftedvalues[2]=xfilt1a[2];


shiftedvaluesP=shiftedvalues // take the adress of the array and return it;

return shiftedvaluesP;
}

这里我认为是正确的方式。

float32_t*  FilterShift_inCapsulatedwithPointer(float32_t*   xfilt1a) 
{
//xfilt1a is an array .

float32_t filt1a[3],shiftedvalues[15];
float32_t* shiftedvaluesP;

filt1a[0]= *xfilt1a; // should i use itlike this *(xfilt1a+1) or like this *xfilt1a+1
filt1a[1]= *xfilt1a+1;
filt1a[2]=*xfilt1a+2;


int8_t ix = 0;
for (ix = 0; ix <2; ix ++)
{
filt1a[ix] = filt1a[ix+1];
// i want to avoid using real values here . can i use pointers here ?
//memcpy(destination, source, sizeof(source));
}


shiftedvalues[0]= filt1a[0];
shiftedvalues[1]= filt1a[1];
shiftedvalues[2]= filt1a[2];



shiftedvaluesP=shiftedvalues ;

}

最佳答案

因为operator precedence表达式 *xfilt1a+1 等于 (*xfilt1a)+1。也就是说,它采用 xfilt1a 指向的值(这是第一个值)并将 1 添加到该值。

您想改用*(xfilt1a+1)完全等于xfilt1a[1]

关于c - 我如何通过指针将数组加载到函数并将它们用于该函数中的计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47888447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com