gpt4 book ai didi

c - 指针 - 困惑

转载 作者:太空宇宙 更新时间:2023-11-04 08:43:49 24 4
gpt4 key购买 nike

我想知道使用指针是否总是更好。我有一个只有一个字节(或一些整数)的结构。该结构包含例程的参数,并将传递到那里。如果我不使用指针(在结构内部),而是通过指针传递这个结构,那么在 main_loop 中所做的更改(对于 logPrio)是否在外部可见(即在 main 中)?

请查看此示例以了解我:

typedef struct mainloop_param_t
{
unsigned char *logPriop;
//or versin w/o pointer
unsigned char logPrio;
}mainloop_param_t;

int main()
{
mainloop_param_t mlparams;


unsigned char logPrio;
mlparams.logPriop = &logPrio;
// or nothing cause mlparams.logPrio already initialized
// would mlparams.logPrio be a copy or original?

g_timeout_add (5000, (GSourceFunc)main_loop, &mlparams);
}

最佳答案

If I don't use pointers (inside of the struct), but pass this struct by pointer, would the change (for logPrio) made in main_loop be visible outside (i.e in main)?

是的,在你传递了 mlparams 的地址之后,在 main_loop 中所做的每一个更改都可以在 main 中可见,无论 mlparams 中的指针还是变量。

我猜你的问题是什么时候应该使用指针。在我看来,指针只是一种访问数据的工具,应该不是它本身的问题。重要的是“数据应该放在哪个地方?”以及“程序如何访问数据?”

以下是部分用法:

  1. 数据在这里(本地)并且将在这里访问 --> 只需定义和使用局部变量
  2. 某处(另一个范围,例如外部)的数据,将在这里访问 --> 定义一个指向数据的指针,并通过运算符访问数据 *
  3. 数据在这里,将在某处(另一个范围,例如内部)访问 --> 定义一个变量并将变量的地址传递到某处
  4. 某处的数据将在其他地方访问 --> 定义一个指向数据的指针并将指针传递到其他地方
  5. 有时候你需要一些可能数量很大的数据,与其将它们全部复制到栈中(可能会导致溢出),不如复制数据开头的地址。地址的副本只是一个指针。

关于c - 指针 - 困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22456341/

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