gpt4 book ai didi

c - 内存分配和更改值

转载 作者:太空宇宙 更新时间:2023-11-03 23:28:18 25 4
gpt4 key购买 nike

我是 C 的新手,如果这真的很基础,请提前致歉。这与作业有关。

我有几个辅助函数,每个都会更改给定变量的值(主要是二进制操作),即:

void helper1(unsigned short *x, arg1, arg2) --> x = &some_new_x

主函数调用其他参数arg3、arg4、arg5x 应该首先从 0(16 位 0)开始,然后由辅助函数修改,在所有修改之后,最终应该由 mainFunction 返回.

我在哪里声明初始 x 以及我如何/在哪里分配/释放内存?如果我在 mainFunc 中声明它,它会在每次调用助手时重置为 0。如果我在辅助函数中释放并重新分配内存,我会得到“正在释放的指针未分配”错误,即使我释放并分配了所有内容,或者我是这么想的。全局变量也不行。

我会说我并不真正完全理解内存分配,所以我假设我的问题是这个,但我完全有可能不理解如何在更基本的层面上更改 C 中的变量值。 ..

最佳答案

变量 x 将在执行声明它的 block 时存在,即使在辅助程序执行期间也是如此,并且提供指向辅助程序的指针允许它们更改其值。如果我理解你的问题是正确的,你不应该需要动态内存分配。以下代码从 mainFunction 返回 4:

void plus_one(unsigned short* x)
{
*x = *x + 1;
}

unsigned short mainFunction(void)
{
unsigned short x = 0;
plus_one(&x);
plus_one(&x);
plus_one(&x);
plus_one(&x);
return x;
}

关于c - 内存分配和更改值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21666975/

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