本题要求实现一个函数,可从一个结构体数组data域中查找一个给定的数据元素x,查找成功,返回该元素所在位置的指针;否则,返回NULL。
时间: 2024-05-01 20:23:33 浏览: 123
以下是一个可能的实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
struct Data {
int id;
char name[20];
double score;
};
struct Data *search(struct Data *data, int n, int x) {
for (int i = 0; i < n; i++) {
if (data[i].id == x) {
return &data[i];
}
}
return NULL;
}
int main() {
struct Data data[MAX_SIZE] = {
{1, "Alice", 90.0},
{2, "Bob", 80.0},
{3, "Charlie", 70.0},
};
int n = 3;
int x = 2;
struct Data *p = search(data, n, x);
if (p != NULL) {
printf("Found data[%d]: %d %s %.1f\n", p - data, p->id, p->name, p->score);
} else {
printf("Not found.\n");
}
return 0;
}
```
该函数接受三个参数:结构体数组data、数组长度n和待查找的数据元素x。在函数中,使用for循环遍历整个数组data,如果找到了数据元素x,则返回该元素所在位置的指针,否则返回NULL。在main函数中,定义一个结构体数组data,并初始化其中的元素。然后调用search函数查找数据元素2,并打印结果。
注意,这里的返回值是一个指向结构体的指针,需要使用->运算符来访问结构体中的成员。同时,由于data是一个数组,返回的指针需要用“指针减去数组”得到元素在数组中的下标。
阅读全文