c - 指针显示与预期不同的值

标签 c function pointers pass-by-reference

我预计以下程序的输出为 5,但编译器显示为 20。谁能解释一下为什么?

 #include <stdio.h>
 int a=5;
 change1(int *p);

int main(void)
{
  int x=20,*ptr=&x;
  change1(ptr);
  printf("%d ",*ptr);
  return 0;
}
change1(int *p)
{
  p=&a;
}

最佳答案

您正在传递一个指针,这会导致函数进行复制。为了更改它,您必须将指针传递给指针。

关于c - 指针显示与预期不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24825109/

相关文章:

python - (代码)OpenERP v7中product.product中的id是什么?

c - 在 C 中使用 malloc 将文本文件读入数组

c - 增加指向结构的指针

c - 在 c 中实现 tar 命令

c++ - 添加额外参数以禁用输出

在 C 中链接任务指针

c - 在 C 副作用中存储指向局部变量地址的指针

javascript - 在没有错误消息的 html 文件中找不到外部 JS 函数。怎么了?

c - 如何将指针作为参数传递给 typedef 函数?

linux - Python 的 C 扩展中的 SIGSEGV