c - 如何将结构指针传递给具有常量值的函数

标签 c pointers arguments

我有:

typedef struct LIST *List;

struct LIST
{
 Node *head;
 int numNodes;
};

如果我想将 List 的实例传递给函数并保持指向的值不变,合适的原型(prototype)应该是什么样的?

到目前为止,我已经尝试过原型(prototype)如下所示的函数:

void func1(const List list);

void func2(List const list);

两者似乎都使指针本身保持不变,但似乎都没有使指向的值保持不变。

非常感谢任何帮助:)

最佳答案

Both seem to keep the the pointer itself constant where neither seem to keep the value pointed to constant.

这正是为什么如果他们打算继续并将该类型视为指针,则不应隐藏指针语义。摆脱混淆的 typedef:

void func1(struct LIST const *p_list);

任何试图根据类型对 const 重新排序的尝试都是转移注意力。 “前导 const 具有误导性”的常见情况。

关于c - 如何将结构指针传递给具有常量值的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47369052/

相关文章:

c - 我的 C 程序出现意外输出和段错误

c - C 中不进行强制转换的指针的整数

c - 在使用 realloc 之前是否需要释放指针变量?

c - linux/list.h 中 container_of 宏背后的基本原理

c - C 中参数的数量可变?

c - 为什么我们不在 TCP 程序中使用客户端地址?

c - C中的指针星号*怎么理解?

java - 列表或字符串数​​组作为方法参数

c - c中的指针作为结构体变量

c# - 检查 `object[] args` 是否满足委托(delegate)实例?