繁体   English   中英

将Struct数组作为指针传递

[英]Passing A Struct array as a pointer

我想将struct数组作为打印函数的参数传递,然后访问其成员进行打印。 当我不分配任何指针时,为什么会出现指针错误?

在main.c中:

struct city {
    double longitude;
    double latitute;
    char name[buf_size]; 
};
int numCitToRead = 10;
struct city cities[25];
printCities(&numCitToRead, cities);

注意:Struct数组在文件解析功能中初始化。 它始终为25个字段,但如果numCitToRead为10,则仅填充10个字段

int printCities(int* t_numCitToRead, struct city t_cities[25]) {

    for (unsigned short i = 0; i < *t_numCitToRead; i++) {
        printf("\n\n\tCity %d: ", i+1);
        printf("\nname:\t\t%s", t_cities[i].name);
        printf("\nlongitude:\t%f", t_cities[i].longitude);
        printf("\nlatitude:\t%f", t_cities[i].latitute);
    }
    return 0;
}

我希望有一个人可以帮助我!

问候

现在已经修改了代码及其工作。 让我们尝试一下:

#include <stdio.h>

struct city {
    double longitude;
    double latitute;
    char *name; 
  };

int printCities(int* t_numCitToRead, struct city t_cities[25]) {

    for (unsigned short i = 0; i < *t_numCitToRead; i++) {
    printf("\n\n\tCity %d: ", i+1);
        printf("\nname:\t\t%s", t_cities[i].name);
        printf("\nlongitude:\t%f", t_cities[i].longitude);
        printf("\nlatitude:\t%f", t_cities[i].latitute);
    }
    return 0;
}

int main() {
  int numCitToRead = 10;
  struct city cities[25];
  // create dummy data
  for(int i =1; i<=25; i++)
  {
   cities[i-1].name = "name";
   cities[i-1].longitude =  10 * i;
   cities[i-1].latitute = 10 * 20;
  } 
 printCities(&numCitToRead, cities);
 return 0;
}

谢谢!

感谢大家的大力支持和有用的评论和建议。

在调整了该线程中人们指出的一些不同的东西之后,它终于成功编译了。

我调整的是:

  • 将头文件包含到printFunctions文件中的city struct数据类型定义中

  • 初始化结构以解决指针错误

感谢您的宝贵意见和评论/建议。

祝你今天愉快!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM