码迷,mamicode.com
首页 > 其他好文 > 详细

指针的使用

时间:2018-04-27 22:59:05      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:erro   转换   err   通过   避免   content   st表   nbsp   表达   

学习链接:

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);

 

指针的使用

标签:erro   转换   err   通过   避免   content   st表   nbsp   表达   

原文地址:https://www.cnblogs.com/y15821933792/p/8964730.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!