c - 如何将指针传递给另一个函数中的结构数组
问题描述
我正在尝试将指向结构数组的指针传递给另一个函数
#include<stdio.h>
#include<string.h>
typedef struct CovidData{
char region[7];
char towns[12];
char race[12];
int yearlyIncome;
int members;
int testedMembers;
int testedPositive;
} CovidData;
void RandomDataGenerator(CovidData *data[] ,int count)
{
for(int i=0;i<count;i++){
memcpy(data[i]->region,"david",sizeof("david"));
memcpy(data[i]->towns,"david",sizeof("david"));
memcpy(data[i]->race,"david",sizeof("david"));
data[i]->yearlyIncome=1000;
data[i]->members=99;
data[i]->testedMembers=88;
data[i]->testedPositive=656;
}
}
int main() {
struct CovidData data[100];
RandomDataGenerator(&data,2);
for(int i=0;i<5;i++){
printf("%s",data[i].region);
}
}
但是在终端中使用 gcc 编译时会引发错误
incompatible pointer types passing 'CovidData (*)[100]' to
parameter of type 'CovidData
解决方案
CovidData *data[]
被分组为CovidData *(data[])
,因此它声明了一个指向 的指针数组CovidData
。对于指向数组的指针,您可以使用CovidData (*data)[]
.
但是,我们很少将指针传递给数组。通常,仅将指针传递给第一个元素就足够且方便。因此,您可以将参数声明为CovidData *data
并将其作为RandomDataGenerator(data, 2)
.
如果您确实将参数声明为指向数组的指针,则不会将其与data[i]->region
. 您需要*data
在应用下标之前获取数组,并且再次需要括号来正确分组:(*data)[i]->region
。
推荐阅读
- django - django 中的基本 inlineformset 在 clean 方法中引发 KeyError
- python - 将表数据排序为五分位数/十分位数
- javascript - 异步生成器:产生被拒绝的承诺
- python - 下载 Dropbox 文件夹中的所有 .mp4 文件
- ros - 添加要导入ROS的包
- javascript - 需要动画数字
- javascript - 来自父级的 Angular 子组件事件多次触发
- filter - NumberRangeColumnFilter 的反应表 globalFilter 示例
- excel - 使用 Excel 打开新的 PowerPoint 演示文稿失败
- ngrok - ngrok,无法完成隧道连接