Tag: 传递值

在函数调用中被单指针和双指针参数混淆

我试图更深入地理解C函数中的指针参数。我已经编写了一个测试程序,试图看到将单个指针传递给一个函数的双指针然后修改它之间的区别。 我有一个有两个function的程序。 第一个函数modifyMe1将单个指针作为参数,并将a属性更改为7.第二个函数modifyMe2将双指针作为参数,并将a属性更改为7。 我预计第一个函数modifyMe1将是“按值传递”,即如果我传入了我的结构指针,C将创建它指向的数据的副本。 对于后者,我正在做一个“传递参考”,它应该修改到位的结构。 但是,当我测试这个程序时,两个函数似乎都修改了结构。 我知道对于指针的性质我有一个误解是肯定的。 有人可以帮我解决这个问题吗? 谢谢! 这是我有的: #include #include struct myStructure { int a; int b; }; void modifyMe1(struct myStructure *param1) { param1->a = 7; } void modifyMe2(struct myStructure **param1) { (*param1)->a = 7; } int main(int argc, char *argv[]) { struct myStructure *test1; test1 = malloc(sizeof(test1)); test1->a = 5; test1->b = […]

更改按值传递的指针

我给了一个函数foo(struct node *n) ,其中n是链表中的头节点。 现在foo应该改变它指向列表的末尾。 但这个function签名是否可行? 假设t是指向列表末尾的指针: n = t将无法工作,因为指针是按值传递的。 *n = *t不起作用,因为我会覆盖列表的头部。 我错过了什么?