让我们假设任何C函数都有一个已经声明的指针,但尚未分配任何值。我们将以我们的例子为例。C指向固定大小数组的指针
int *ptr;
功能的目标是不分配ptr
堆上的任何动态内存,所以没有malloc
电话。相反,我们希望让它指向一个固定大小的数组n
。我知道我可以做到这一点,像这样:
int arr[n];
ptr = arr;
但是,代码可以得到非常混乱,难以阅读,如果我们需要一个功能,即,许多指针字段都需要的结构做了很多次指向一个固定长度的数组。有没有更好的方法来完成这一行?我在想类似下面的东西,但它看起来过于模糊和不可编译:
int *ptr;
// Many other things happen in between...
ptr[n];
*** ***编辑
这里,下面的附加信息可能有助于引导更多的答案(不是说目前的答案不好)。在我的用例中,指针是在结构中声明的,在一个函数中,我将指针分配给一个数组。我想知道是否有做到这一点比下面的代码更简单的方法(所有的指针指向定长数组):
struct foo {
int* a;
short* b;
char* c;
...
};
void func(void) {
struct foo f;
int n = ...;
int tempArr1[n];
f.a = tempArr1;
short tempArr2[n];
f.b = tempArr2;
char tempArr3[n];
f.c = tempArr3;
...
}
它不仅含糊不清 - 如果在运行时或编译时尚未分配内存,将会导致内存故障。 – Hogan 2012-02-22 13:44:51
为什么你需要'ptr'?为什么不直接使用'arr'? – 2012-02-22 13:45:28
@JamesMcLaughlin - 他不喜欢它的外观。 – Hogan 2012-02-22 13:50:03