关于完善C语言知识储备的学习--指针1

前言

指针是C语言在所有高级语言中特有的,它的知识点有点绕,但功能也十分强大。今天介绍一个指针经典程序---用指针变量互换两个数字。


话不多说,直接上代码

1.代码如下

# include <stdio.h>

//void huhuan(int *, int *)//声明的时候可以不用形参 

void huhuan(int *p, int *q)
{
    int t;
    t = *p;
    *p = *q;
    *q = t;
    return;
}

int main()
{
    int a = 5, b = 3;
    huhuan(&a, &b);//必须要把a和b的地址赋给p和q 
    
    printf("%d %d", a, b);
    
    return 0;
}

2.输出结果

结果如下:

3 5
--------------------------------
Process exited after 0.0227 seconds with return value 0
请按任意键继续. . .


总结

1.指针变量是可以储存其他变量地址的变量,指针就是地址,首先把这两个概念要区分清楚。那么在把a和b的值发送给huhuan函数中变量p和q的时候要发送它们的地址,因为p和q是指针变量,发送完成以后,p储存的便是a的地址,q同理,那么*p就是a,*q就是b

2.开始执行huhuan函数时,系统会为huhuan函数分配一块空间,同时main函数也有一块空间,各函数空间内有各自变量分别的空间,那么main函数和huhuan函数是两块不同的内存空间 X Y,其中X有a和b两个变量,Y有t,p,q三个变量 
把a的地址赋给p,p的地址(p在Y空间有自己的地址)不是a的地址p里面储存(储存是指p地址的内存单元储存)的是a的地址,那么t定义了以后就会有t的地址和空间,*是一种运算方式  
t = *p相当于把a的值给t,*p = *q相当于在Y空间操作X空间的变量,这个操作是把b的值赋给a,这个如果没有指针是做不到Y空间操作X空间的变量,*q = t是指把t中的值通过q做*运算
来让X空间的b变量的值变为t的值,这样就完成了把a和b的值互换。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值