gpt4 book ai didi

c - 返回变量为 NULL

转载 作者:行者123 更新时间:2023-12-02 06:36:44 26 4
gpt4 key购买 nike

当我说:“返回的变量为 NULL。”时,我的意思是它返回一个结构,其中包含两个指针并且 它们 == NULL

struct LandR_8
{
unsigned char *L; // For L channel.
unsigned char *R; // For R channel.
}; // These pointers point to the allocated memory.
struct LandR_8 LRChannels_8;

我的功能:

struct LandR_8 sepChannels_8( unsigned char *smp, unsigned char *L, unsigned char *R, unsigned long N, struct LandR_8 LRChannels )
{
int i;

L = malloc(N / 2);
R = malloc(N / 2);

for ( i = 0; i < (N / 2) ; i++ ) // separating
{
L[i] = smp[2 * i + 0];
R[i] = smp[2 * i + 1];
}

// L and R don't need `free()`.

return LRChannels;
}

返回 struct LandR 类型的变量 LRChannels:

我这样调用我的函数:

LRC_8 = sepChannels_8( ptrSamples_8, ptrSamples_8_L, ptrSamples_8_R, n, LRChannels_8 );

问题是在使用该函数之后 LRC_8.L == NULL

为什么会这样?

最佳答案

你的函数接口(interface)不一致

当您从内部创建它们时,您不需要将 LR 作为参数。

有一个 LRChannels 进来也是适得其反的。

最简单的设计可能是

struct LandR_8 sepChannels_8( unsigned char *smp, unsigned long N)
{
unsigned char *L;
unsigned char *R;
struct LandR_8 LRChannels;

int i;

L = malloc(N / 2);
R = malloc(N / 2);

for ( i = 0; i < (N / 2) ; i++ ) // separating
{
L[i] = smp[2 * i + 0];
R[i] = smp[2 * i + 1];
}

// L and R don't need `free()`.

LRChannels.L = L;
LRChannels.R = R;
return LRChannels;
}

关于c - 返回变量为 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16722308/

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