零基础学习C语言。
本帖最后由 daqiao 于 2017-6-16 20:06 编辑看视频到指针的部分。
#include <stdio.h>
int main()
{
void swap(int *d1,int*d2);
int a,b,*p1,*p2;
scanf ("%d %d",&a,&b);
p1=&a; //把a的地址赋值给指针。
p2=&b;
swap(p1,p2);
printf ("%d %d\n",a,b);
}
void swap(int *d1,int *d2)
{
int temp;
temp=*d1; //取值并赋值给局部变量。
*d1=*d2;
*d2=temp;
}
这个函数没有返回值,为什么主函数的a,b的值为什么能调换过来,请大虾帮忙解释一下。谢谢! 最直白的理解就是,程序中的数据均要保存在计算机的内存地址里,需要用到时再从地址里取出来。我想表达就是在程序中,地址相当于全局变量(不知道是否恰当的比喻。。。)。指针指向地址,对地址中的内容进行交换,那么就相当于对所有指向这个地址的变量内容进行了交换,也就是不需要返回值就进行了数据交换。 要知道为什么互换了a,b;首先要看你对指针了解多少。
简单的来说1:指针指向的是一个地址
2:p1=&a; //意思是把 a 的地址赋值给p1,p1里存储是的a的地址;这里p1便指向了a;
3:接下来你可以用指针的方式对a的内容进行取读 或 修改
b = *p1; // 实际就是把a的值赋值给b
*p1=666; // 相当于 a=666
如下图:
ba21 发表于 2017-6-17 11:26
要知道为什么互换了a,b;首先要看你对指针了解多少。
简单的来说1:指针指向的是一个地址
2:p1=&a; // ...
谢谢,你讲的很详细,还弄了个图。真的很感谢。
页:
[1]