指针及指针变量

指针

有一种变量是用来存放地址的--指针变量(专门存地址的)

//两个值的相互交换-->

int a,b,c;

scanf("%d%d",&a,&b );

t=a,a=b,b=t;

这样的看似循环的值的相互赋予实际上并没有让每个值 不断变换,反而实现的a,b值的相互交换。代码的运行过程大致为,把a的值赋给t,此时作为一个中间变量是作为一个媒介工具,它拥有的是a以前的值,然后b再把它的值赋给a,这时a的值就变成了b的值,然后t再利用之前a赋给它的值交给b,从而实现a,b值的相互交换。//大多没理解的会认为a赋给t后,b再赋给a,此时会再赋值给t,实际上代码的执行是有顺序的所以就不会出现逻辑的错误。

//void的用法:用void可以省略return 0,或者省略0.简而言之void可以省略返回值

#include<stdio.h>

void  swap(int x, int y)

{

int t = x;x = y; y = t;

}

void main()

{

int  num1 = 100;

int  num2 = 200;

printf("before swapping, %d%d",num1, num2);

swap(num1, num2);

 printf("after swapping, % d%d,num1, num2};

}

输出以后保持不变主要是因为调用函数时使用按值调用,实际上是x,y相互交换,而不是num1,num2。按值调用时,实际参数只是复制到形式参数中。

所以我们通过创建指针的方式解决上述问题。

第一步:创建指针变量,写法为:基本类形--+*

第二步:给指针变量赋值,&+变量。

//总而言之就是指针变量就是存放地址的一种特殊变量。这种特殊就是在变量前加个*,比如int * t

创建完后我们给这个变量赋值,所以赋值就是赋地址,要地址就是加个&

于是,上面的代码就变成了;

void swap(int*x, int*y)

{

   int t = *x;

   *x = *y;

   *y = *t;

}

void change()

{

    int a = 100;

     int b = 200;

    swap(&a ,&b);

}

一个 函数只能访问自己的栈帧。但是,通过指针,一个函数可以间接的读写另一个栈帧中的变量值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值