指针的使用

学习链接:

http://www.icourse163.org/learn/ZJU-200001?tid=1002316004#/learn/content?type=detail&id=1003086473&cid=1003636045

指针的应用场景

1.交换两个变量

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

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

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

传入函数的数组成了什么?

函数参数表中的数组实际上是指针

  sizeof(a)=sizeof(int *)

但是可以用数组的运算符[]进行运算

数组参数

以下四种函数原型是等价的:

int sum(int *ar, int n)

int  sum(int *,int)

int sum(int ar[], int n)

int sum(int [],int)

数组变量是特殊的指针

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

  int a[10]; int *p=a;

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

  a==&a[0]

[]运算符可以对数组做也可以对指针做:

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

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

  *a=25

数组变量是const的指针,所以不能被赋值

int a[] -->int * const a

指针与const

指针是const 表示一旦得到某个变量的地址,不能在指向其他的变量

  int * const q = &i ;

  * q =;26;

  q++;

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

  const int * p= &i;

  *p = 26;error

  i = 26;ok

  p=&j ;ok

转换

1.总是可以把一个非const的值转换成const的

2.当要传递的参数的类型币地址的时候,这是常用的手段:既能用比较少的字节数传递给参数,又能避免函数对外面的变量的修改

const数组

const int a[]={1,2,3}

数组变量已经是const的指针了,这里的const表明数组的每个单元都是const int

所以必须通过初始化进行赋值

保护数组值

因为把数组传入函数时传递的是地址,所以函数内部可以修改数组的值

为了保护数组不被函数破坏,可以设置参数为const

  int sum (const int a[], int length);

 

转载于:https://www.cnblogs.com/y15821933792/p/8964730.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值