概述
1.多维数组的内存布局
多维数组在系统编程中并不常用。所以毫不奇怪的是,C语言并未像其他语言所要求的那样定义了详细的运行时程序来支持这个特性。单个元素的存储和引用实际上是以线性形式排列在内存中的。
2.指针数组就是iliffe向量
数组必须用指向为字符串而分配的内存的指针进行初始化。
3.在锯齿状数组上使用指针
如果声明一个字符串指针数组,并根据需要为这些字符串分配内存,将会大大节省系统资源。有些人把它称为“锯齿状数组”是因为它右端的长度不一。只要有可能,尽量不要选择拷贝整个字符串的方法,如果需要从两个不同的数据结构访问它,拷贝一个指针比拷贝整个数组快得多,空间也节省很多。另一个可能影响性能的因素是iliffe向量可能会使字符串分配于内存中不同的页面中。这就违反了局部引用的规则,并导致更加频繁的页面交换,具体如何取决于怎样访问数据以及访问的频度。
4.向函数传递一个一维数组
需要一个约定来提示数组的长度,一般有两个基本方法:
(1)增加一个额外的参数,表示元素的数目(argc就是起这个作用);
(2)赋予数组最后一个元素一个特殊的值,提示它是数组的尾部。这个特殊值必须不会作为正常的元素值在数组中出现。
5.使用指针向函数传递一个多维数组
方法1:
my_function(int my_array[10][20]);
方法2:
my_function(int my_array[][20]);
类似:my_function(int (*my_array)[20]);
方法3:
my_function(char **my_array);
注意:只有把二维数组改为一个指向向量的指针数组的前提下才可以这样做!
方法4:
char_array[row_size*i+j]=...
6.使用指针从函数返回一个数组
严格地说,无法直接从函数返回资格数组,但是,可以让函数返回一个指向任何数据结构的指针,当然也可以是一个指向数组的指针,记住,声明必须在使用之前。千万要注意,不能从函数中返回一个指向函数局部变量的指针。
7.使用指针创建和使用动态数组
它的基本思路就是使用malloc()库函数来得到一个指向一大块内存的指针,然后像引用数组一样引用这块内存,其机理就是一个数组下标访问可以改写为一个指针加偏移量。
最后
以上就是靓丽花瓣为你收集整理的C专家编程(学习笔记)_第10章 再论指针的全部内容,希望文章能够帮你解决C专家编程(学习笔记)_第10章 再论指针所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复