C语言学习笔记(13指针)

来源:互联网 发布:大唐通讯科技软件 编辑:程序博客网 时间:2024/05/16 04:54

1、指针经典程序交换两个数字

#include <stdio.h>#include <stdlib.h>void Swap1(int a,int b){//交换的是形参a,b的值int t;t=a;    a=b;b=t;}void Swap2(int* p,int* q){int* t;t=p;p=q;q=t;//执行完后p保存的是b的地址,q保存的是a的地址,//但是主函数中的a,b的地址始终没有变,值也没有变化。//例如:a的地址是1000H,存放的值是3,b的地址是2000H,存放的值是5,//调用Swap2函数,把a的地址1000H赋给p,b的地址2000H赋给q,//经过函数执行后:p保存了b的地址(p=2000H),    //q保存了a的地址(q=1000H),而对主函数中的a,b并无影响.}void Swap3(int* p,int* q){//p指向a的地址,所以*p就是a的值,q指向b的地址,所以*q就是b的值//p是int*类型,*p就是int类型int t;t=*p;*p=*q;*q=t;}int main(void){int a=3;int b=5;//Swap1(a,b);//输出的是3,5,不能实现互换//Swap2(&a,&b);//输出的还是3,5,不能实现互换Swap3(&a,&b);//实现了互换,输出是5,3printf("a=%d, b=%d\n",a,b);system("pause");return 0;}


 2、*号的含义

3、如何通过被调函数修改主调函数普通变量的值

#include <stdio.h>#include <stdlib.h>void f(int* p,int* q){//p指向a的地址,*p就是a的值,改变*p的值就是改变a的值*p=1;*q=2;}int main(void){int a=3;int b=5;f(&a,&b);//把a,b的值都给修改了printf("a=%d, b=%d\n",a,b);system("pause");return 0;}


 

 

原创粉丝点击