《深入理解C指针》-第4章 指针和数组

                                    第4章 指针和数组

《深入理解C指针》-第4章 指针和数组

 

数组是C内建的基本数据结构,彻底理解数组及其用法是开发高效应用程序的基础。曲解数组和指针的用法会造成难以查找的错误,应用程序的性能也难以达到最优。数组和指针表示法紧密关联,在合适的上下文中可以互换。

一种常见的错误观点是数组和指针是完全可以互换的。尽管数组名字有时候可以当做指针来用,但数组的名字不是指针。数组表示法也可以和指针一起使用,但两者明显不同,也不一定能互换。理解这种差别可以帮助你避免错误地使用这些表示法。比如说,尽管数组使用自身的名字可以返回数组地址,但是名字本身不能作为赋值操作的目标。

数组在应用程序中随处可见,可能是一维,也可能是多维。在本章中,我们会讲解数组跟指针相关的基础知识,以便你深入理解数组以及使用指针操作数组的各种方法。本书其他章节还会展示在更高级的环境中使用数组和指针。

本章首先概述数组,然后研究数组表示法和指针表示法的相同点和不同点。可以用malloc类函数创建数组,这些函数提供比传统的数组声明更灵活的机制。我们会看到如何用realloc函数来改变已经为一个数组分配的内存大小。


为数组动态分配内存可以为代码带来很大的改变,特别是处理二维或多维数组的情况,因为我们得确保为数组分配的内存是连续的。我们也会探索传递和返回数组时可能发生的问题。大部分情况下,必须传入数组长度以便函数正确处理数组。数组的内部表示不带有长度信息,如果我们不传递长度,函数就没有标准的方法得到数组的终点。即便并不常用,我们也会研究如何在C中创建不规则数组。不规则数组是二维数组,每一行都可能包含不同的列数。要说明这些概念,需要使用向量和矩阵,前者代表一维数组,后者代表二维数组。向量和矩阵用途广泛,包括电磁场分析、天气预报和数学上的应用。


4.1 数组概述

 

 

 


4.1.1 一维数组

 


4.1.2 二维数组


4.1.3 多维数组


4.2 指针表示法和数组


数组和指针的差别

 

4.3 用malloc创建一维数组


4.4 用realloc调整数组长度


4.5 传递一维数组


4.5.1 用数组表示法
4.5.2 用指针表示法

4.6 使用指针的一维数组


4.7 指针和多维数组


4.8 传递多维数组


4.9 动态分配二维数组


4.9.1 分配可能不连续的内存
4.9.2 分配连续内存


4.10 不规则数组和指针


4.11 小结