0

如果这是一个重复的问题,我深表歉意,但我似乎无法找到关键字来搜索我要问的问题。

基本上,我已经为自己定义了一个结构。

#define max_terms 101

typedef struct{
    int row, col, value;
} term;

现在我有三个不同的术语,即 a[max_terms]、b[max_terms] 和 c[max_terms] 我想输入以下函数的参数,以便我可以选择处理三个定义的数组中的哪一个

void input(/*parameter here*/){
    a[0].row = 0; // want to be able to choose the array to work on instead of just a
}

感谢您的阅读!

4

2 回答 2

3

最简单的方法是将指向数组第一个元素的指针传递给函数。

void input(term *a)
{
    a[0].row = 0;
}

/* ... */

term b[max_terms];
input(b);

正如giorashc在评论中指出的那样,如果数组不都使用相同的大小,您需要将实际大小作为附加参数传递。

于 2012-10-28T09:27:18.803 回答
1

您有两个常见的选择:

void input(term *t, size_t size)

和:

void input(term t[], size_t size)

两者意思相同。传递参数对两者都是一样的。当你有:

term t[SIZE];

然后其中任何一个都可以工作:

input(&t[0], SIZE);

或者:

input(t, SIZE);

显然,第二种更方便。和第一个意思一样;这只是一种更短的编写方式。C 允许这样做,因为传递数组第一个元素的地址是一种非常常见的操作。

于 2012-10-28T09:31:38.503 回答