指针在c和c程序中

san*_*101 2 c pointers

我正在学习指针,我遇到了这个程序:

#include <stdio.h>

void swap(int *,int *);

int main()
{
    int a=10;
    int b=20;
    swap(&a,&b);
    printf("the value is %d and %d",a,b);
    return 0;
}

void swap(int *a,int*b)
{
    int t;
    t=*a;
    *a=*b;
    *b=t;
    printf("%d and%d\n",*a,*b);
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我为什么这个主函数返回值反转?到目前为止我理解的是C中的函数调用不会影响main函数及其值.

我也想知道指针变量占用的空间有多少像整数一样占用了2个字节以及各种应用程序的使用和指针的优点......

JSB*_*ոգչ 5

你是对的:C中的函数不能直接影响调用者的值.但是,正在给的值swap()是不是值ab.相反,它们是指向这些值的指针 - 基本上是内存中的地址ab生存地址.由于swap具有这些地址,因此它可以写入那些存储器位置并有效地改变ab.

顺便说一句,祝你好运.如果你来自没有它们的上下文,那么获取C是最困难的事情.我是通过Perl来到C的,我几次用指针打破了我的大脑.但是一旦你了解它,它就会打开一个全新的世界.