c语言 指针

运算符&

获得变量的地址,操作数必须为变量

地址的大小是否与int相同取决于编译器

&不能对没有地址的东西取地址

 一个指针类型的变量,就是保存地址的变量*

int *p=&i;

变量的值是内存的地址

普通变量的值是实际的值

指针变量的值是具有实际值的变量的地址

作为参数的指针

void f(int *p)

在被调用的时候得到了某个变量的地址

 int i=0;f(&i);

在函数里面可以通过这个指针访问外面的这个i

访问地址上的变量:*

*  是一个单目运算符,用来访问指针的值所 表示的地址上的变量

    可以做右值也可以做左值 

*左值之所以叫左值

 因为出现在赋值号左边的不是变量,而是值,是表达式计算的结果:

a[0]=2;   *p=3;  是特殊的值,所以叫左值

指针的运算符&*

互相反作用

&*yptr->&(*yptr)->&(y)->得到y的地址,也就是yptr->yptr 

*&yptr->*(&yptr)->*(yptr的地址)->得到那个地址上的变量->yptr

指针应用场景:1.交换两个变量的值

2.函数返回多个值,某些值就只能通过指针返回

3.传入的参数实际上是需要保存带回的结果的变量

4.函数返回运算状态,结果通过指针返回(常见的套路是让函数返回特殊的不属于有效范围内的值     来表示出错:-1或0

   但是当任何数值都是有效的可能结果时,就得分开返回了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值