6.1 我有定义char a[6],而在另一个文件中,我声明了extern char *a。为什么它不起作用?
6.2 但我听说char a[]与char *a.
6.3 在 C 中,“指针和数组的等价性”是什么意思?
6.4 如果它们如此不同,那么为什么数组和指针声明可以互换地用作函数形式参数?
6.4b 那么数组是按引用传递的,即使 C 的其他部分使用按值传递?
6.5 为什么我不能这样做?
extern char *getpass(); char str[10]; str = getpass("Enter password: ");
6.6 如果你不能赋值给数组,那么如何
int f(char str[]) { if(str[0] == '\0') str = "none"; ... }的函数调用是否会工作?
6.6b 还有这个呢?这难道不是数组赋值吗?
char a[] = "Hello, world!\n";
6.7 数组如何成为左值,如果你不能给它赋值?
6.8 实际上,数组和指针之间有什么区别?
6.9 有人向我解释说数组实际上是常量指针。
6.10 我仍然感到困惑。指针是一种数组,还是数组是一种指针?
6.11 我遇到了一些“笑话”代码,其中包含“表达式”5["abcdef"]这怎么会是合法的 C 代码?
6.12 由于数组引用会衰减为指针,如果arr是一个数组,那么arr和&arr?
6.13 如何声明一个指向数组的指针?
6.14 如何在运行时设置数组的大小?
我怎样才能避免使用固定大小的数组?
6.15 如何声明一个大小与传入数组匹配的局部数组?
6.16 如何动态分配多维数组?
6.17 这是一个巧妙的技巧:如果我写
int realarray[10]; int *array = &realarray[-1];我可以把array当作是基于 1 的数组。
6.18 我的编译器在将二维数组传递给期望指针之指针的函数时抱怨。
6.19 如何编写接受二维数组的函数,而其宽度在编译时未知?
6.20 在将静态分配和动态分配的多维数组传递给函数时,如何使它们可以互换使用?
6.21 为什么sizeof当数组是函数参数时,不能正确报告数组的大小?我有一个测试例程
f(char a[10]) { int i = sizeof(a); printf("%d\n", i); }它打印 4,而不是 10。
6.22 在其中声明数组的代码如何extern(即,它在一个其他文件中定义,并确定其大小)确定数组的大小?sizeof似乎行不通。
6.23 我想知道数组中有多少个元素,但是sizeof返回字节大小。
6.24 有没有办法拥有一个位数组?