我正在学习指针,我遇到了这个程序:
#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);
}
任何人都可以告诉我为什么这个主函数返回值反转?到目前为止我理解的是C中的函数调用不会影响main函数及其值.
我也想知道指针变量占用的空间有多少像整数一样占用了2个字节以及各种应用程序的使用和指针的优点......
你是对的:C中的函数不能直接影响调用者的值.但是,正在给的值swap()是不是值a和b.相反,它们是指向这些值的指针 - 基本上是内存中的地址a和b生存地址.由于swap具有这些地址,因此它可以写入那些存储器位置并有效地改变a和b.
顺便说一句,祝你好运.如果你来自没有它们的上下文,那么获取C是最困难的事情.我是通过Perl来到C的,我几次用指针打破了我的大脑.但是一旦你了解它,它就会打开一个全新的世界.