将指针传递给C中函数的困惑

罗普先生

我试图理解C中的指针并编写了这段代码

#include <stdio.h>

int swap(int *fa,int *fb){
    int temp = *fa;
    *fa = *fb;
    *fb = temp;
}

int main(){
    int a=5,b=7;

    int *pa = &a;
    int *pb = &b;

    swap(pa,pb);

    printf("%d\n",*pa);
    printf("%d\n",*pb);

    printf("%d\n",a);
    printf("%d",b);
}

现在输出(按预期)是

7
5
7
5

我对正在发生的事情有点了解,但是我感到困惑

  1. 在我调用交换函数之后,就会发生这种情况
fa = pa // fa points to what pa points to which means a
fb = pb // fb points to what pb points to which means b
  1. 我们交换fa和fb的值,这又交换a和b的值,因为pa和pb指向a和b,它们现在指向这些新值。

这是怎么回事

还是fa和fb首先影响pa和pb,进而影响a和b。

格哈德
  1. 在我调用交换函数之后,就会发生这种情况
fa = pa // fa points to what pa points to which means a
fb = pb // fb points to what pb points to which means b

如果您的意思是输入后,swap那么可以。那是对的。参数作为一个拷贝,这意味着函数内部传递fafb获取的副本pa,并pb从主叫方。

  1. 我们交换fa和fb的值,这又交换a和b的值,因为pa和pb指向a和b,它们也指向这些新值。

fa,并fb没有在所有的感动。它们被取消引用。这意味着,他们指向的地址会受到影响。您可以printf用来打印那些指针变量的内容。他们不会改变。而是更改a的内容b

顺便说一句:您的printf发言没有多大意义。您应该在函数调用之前和之后都打印以查看效果。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将指针传递给C ++中的函数

来自分类Dev

将数组的指针传递给C中的函数

来自分类Dev

将指针传递给接受C ++中的引用的函数

来自分类Dev

如何将参数传递给C中的函数指针?

来自分类Dev

将指针传递给c中的strcpy函数

来自分类Dev

将结构指针传递给函数c ++

来自分类Dev

C ++:将指针向量传递给函数

来自分类Dev

C ++将指针数组传递给函数

来自分类Dev

将char指针传递给C函数

来自分类Dev

C - 将指针传递给函数

来自分类Dev

将指针地址与指针传递给C中的指针

来自分类Dev

Cython:将指针传递给函数中的指针,采用 void **

来自分类Dev

将单指针和双指针传递给C中的函数

来自分类Dev

将指针传递给函数

来自分类Dev

将指针传递给函数

来自分类Dev

将指针传递给函数

来自分类Dev

将指针传递给函数

来自分类Dev

将指针传递给函数

来自分类Dev

如何将指针传递给函数并在函数C ++中动态分配内存

来自分类Dev

将函数传递给C ++中的函数

来自分类Dev

将指针传递给函数指针

来自分类Dev

将数组传递给函数-指针与引用(C ++与C)

来自分类Dev

将指针(数组名称)传递给C / C ++中的函数

来自分类Dev

将双指针传递给 C 和 C++ 中的函数的区别

来自分类Dev

通过函数中的引用将const指针传递给const

来自分类Dev

将指针参数传递给其他文件中的函数

来自分类Dev

将指针传递给构造函数中的数组

来自分类Dev

将实例方法传递给需要C函数指针的API

来自分类Dev

C ++将指针传递给非静态成员函数