第十章 数组和指针(关键字const,指针分析数组属性)总结 140519

       在函数调用传递参数时,可以向函数传递数值,也可以向函数传递指针。传递指针方法比传递数值方法效率高。因为传递数值时会把原来的数据拷贝一分到存储空间,然后把原来的数据复制到函数。而传递指针方法它是直接操作原函数数据的地址。传递指针可能因为编程写的代理错误而导致原始数据得到修改。为了避免这类错误可以在函数原型和定义的形式参数声明中用关键字const。这样就告知编译器:函数应当把参数作为包含常量数据对待,

关键字const:

        const 不但像用#defing 指令来声明常量,它还可以创建数组常量,指针常量,指向常量的指针 ,指向 常量的指针 

例了:const double * pd ; 通常把指向常量的指针用作函数参量 ,以表明函数不会用这个指针来修改数据 ,注意:常量或非常量数据的地址可以赋值结指向常量的指针,而非常量数据的地址才可以赋值给普通的指针。指针常量例了:double * const pc; 这样可以保证不会指向别处,还可用两个const来创建一个既不可以更改所指向的地址也不可修改所指向的数据,例:const double * const pc = 地址;

指针和多维数组:(这个比较难理解个人认为)

例子:int zippo [4] [2]; 数组名zippo同时也是数组首元素的地址。在本例中。zippo 的首元素本身又是包含两个int的数组, 因此 zippo也是包含两个int的数组地址。从指针属性分析如下 :

1. 因为zippo是数组首元素的地址,所以zippo的值和&zippo [0]相同。另一方面zippo本身是包含两个整数的数组,因此zippo【0】的值同首个元素(一个整数)的地址&zippo【0】【0】相同,不管zippo[0]是一个整数大小对象的地址,还是zippo两个整数大小对象的地址都开始于同一个地址。

2.对一个指针加1 会对原来的数值加上一个对应类型大小的数值,所以zippo[0]加1,只加上一个int类型的数值,而zippo加1,就要加上两个int数型的数值。

3.对一个指针 (地址)取值 (使用运算符或者带有索引的[]运算符)得到的是指针 所指向 对象的数值,因为zippo[0]是其首个元素 zippo [0][0]的地址,所以*(zippo [0 ])代表存储在zippo[0][0]中的数值。同样,*zippo代表其首个元素zippo[0]的值,但是zippo[0]本身就是一个int数的地址即&zippo[0][0],总结来说zippo地址的址址。需要两次取值才可以得到通常的数值。

如何声明指向二维数组的指针变量

我要想声明指向二维数组的指针变量要考虑首地址是包含两个值的数组, 所以声明的方法是 int (* pz) [2] ;//pz指向 一个包含2个int值的数组。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值