C语言中的指针

指针

指针就是保持地址的变量

作为参数的指针

·void    f(int   *p);

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

·int    i=0;  f(&i);

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

访问那个地址上的变量*

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

·可以做右值也可以做左值

·int   k=*p;

·*p=k+1;

*左值之所以叫左值

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

·a[0]=2;

·*p=3;

·是特殊的值,所以叫做左值

指针的运算符&*

·互相反作用

·*&yptr    ➡     *(&yptr)    ➡    *(yptr的地址) ➡    得到那个地址上的变量    ➡    yptr   

 ·&*yptr   ➡     &(*yptr)    ➡    &(y)    ➡     得到y的地址,也就是typr   ➡   yptr

指针应用场景二b

·函数返回运算的状态,结果通过指针返回

·常用的套路是让函数返回特殊的不属于有效范围内的值来表示出错

·-1或0(在文件操作会看到大量的例子)

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

数组变量是特殊的指针

·数组变量本身表达地址,所以

        ·int   a[10];int*p=a;   //无需用&取地址

        ·但是数组的单元表达的是变量,需要用&取地址

        ·a==&a[0]

 ·【】运算符可以对数组做,也可以对指针做:

        ·p[0]<==>a[0]

·*运算符可以对指针做,也可以对数组做:

        ·*a=25;

指针是const

·表示一旦得到了某个变量的地址,不能再指向其他变量

·int*const  q=&i;//q是const

·*q=26;//OK

·q++;    //ERROR

所指是const

·表示不能通过这个指针去修改那个变量(并不能使那个变量成为const)

·const    int*p=&i;

·*p=26;//ERROR!(*p)是const

·i=26;//OK

·p=&j;//OK

                

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值