第十章 数组和指针(关键字const,指针分析数组属性)总结 140519
2014-05-20 00:18
519 查看
在函数调用传递参数时,可以向函数传递数值,也可以向函数传递指针。传递指针方法比传递数值方法效率高。因为传递数值时会把原来的数据拷贝一分到存储空间,然后把原来的数据复制到函数。而传递指针方法它是直接操作原函数数据的地址。传递指针可能因为编程写的代理错误而导致原始数据得到修改。为了避免这类错误可以在函数原型和定义的形式参数声明中用关键字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值的数组。
关键字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值的数组。
相关文章推荐
- C++知识点总结(上):指针和引用,static关键字,const关键字,malloc\free和new\delete的区别等
- 第十章 数组和指针(复习题总结)总结 140521 22 23
- 第十章 数组和指针(函数和二维数组,本章个人总结)总结 140520
- const,指针,数组,指针常量,常量指针等归纳总结
- 第十章 数组和指针(数组及数组初始化)总结 140517
- 数组指针和指针数组和mutable和explicit和static和const关键字
- const关键字与指针的总结
- 第十章 数组和指针(数组和指针的关系,指针操作)总结 140518
- 从const int *p、int* const p到this指针的const属性分析
- 【翠字营】:const和指针组合 分析总结
- c 多维数组 指针关系总结
- const int *a, int const *a,int * const a,区别,指针数组,数组指针,声明与定义
- 字符数组,字符指针,Sizeof总结
- 内存的堆分配和栈分配 & 字符数组,字符指针,Sizeof总结
- const static readonly等关键字的区别(欢迎高手指正我的总结)
- 内存的堆分配和栈分配 & 字符数组,字符指针,Sizeof总结
- 字符数组,字符指针,Sizeof总结
- C语言解惑上面一个数组指针题目分析
- 字符数组,字符指针,Sizeof总结
- 关键字:auto、static、register、const、volatile 、extern 总结