7. 数组和指针
- 7.1 我在一个源文件中定义了 char a[6], 在另一个中声明了
extern char *a 。为什么不行 ?
- 7.2 可是我听说 char a[ ] 和 char *a 是一样的。
- 7.3 那么, 在 C 语言中 ``指针和数组等价" 到底是什么意思 ?
- 7.4 那么为什么作为函数形参的数组和指针申明可以互换呢 ?
- 7.5 如果你不能给它赋值, 那么数组如何能成为左值呢 ?
- 7.6 现实地讲, 数组和指针地区别是什么 ?
- 7.7 有人跟我讲, 数组不过是常指针。
- 7.8 我遇到一些 ``搞笑" 的代码, 包含 5["abcdef"]
这样的 ``表达式"。 这为什么是合法的 C 表达式呢 ?
- 7.9 既然数组引用会蜕化为指针, 如果 arr 是数组, 那么 arr 和 &arr
又有什么区别呢 ?
- 7.10 我如何声明一个数组指针 ?
- 7.11 我如何在运行期设定数组的大小 ? 我怎样才能避免固定大小的数组 ?
- 7.12 我如何声明大小和传入的数组一样的局部数组 ?
- 7.13 我该如何动态分配多维数组 ?
- 7.14 有个灵巧的窍门: 如果我这样写
int realarray[10];
int *array = &realarray[-1];
我就可以把 ``array" 当作下标从 1 开始的数组。
- 7.15 当我向一个接受指针的指针的函数传入二维数组的时候,
编译器报错了。
- 7.16 我怎样编写接受编译时宽度未知的二维数组的函数 ?
- 7.17 我怎样在函数参数传递时混用静态和动态多维数组 ?
- 7.18 当数组是函数的参数时, 为什么 sizeof 不能正确报告数组的大小 ?
翻译朱群英、孙云, LaTeX2HTML 编译 朱群英 (2005-06-23)