[英]Output of values of a struct via a function with a pointer as a parameter
我有两个结构。 一个指针被分配给一个。 现在我想通过 function (outputAddress) 将先前通过 scanf 输入的 output 数据与指针作为参数。 它通过指针处理变量。 但是我如何使用来自其他结构的值来做到这一点? 我怎么能在 function 这个 output 这个?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct structPerson
{
char name[30];
char forename[50];
int age;
};
struct structAddress
{
int zip;
char location[35];
char street[40];
int hNumber;
struct structPerson *ptrPerson;
};
void outputAddress(struct structPerson *ptrPerson)
{
printf("\n\nOutput Address: \n");
printf("ptrPerson->name: %s", ptrPerson->name);
printf("\nptrPerson->forename: %s", ptrPerson->forename);
return;
}
int main()
{
struct structPerson person1;
struct structAddress address1;
address1.ptrPerson = &person1;
printf("Location: ");
scanf("%s", &address1.location);
printf("Zip: ");
scanf("%d", &address1.zip);
printf("\nName: ");
scanf("%s", &address1.ptrPerson->name);
printf("Forename: ");
scanf("%s", &address1.ptrPerson->forename);
printf("\nOutput: %d %s %s\n", address1.zip, address1.location, address1.ptrPerson->name);
// strcpy( address1.location, "");
// printf("structAddress1: %d %s\n", address1.zip, address1.location);
outputAddress(&person1);
return 0;
}
无论如何,您的数据模型可能已损坏。 address 结构体有一个指向人的指针,但反过来使用它通常更有意义。
在您的数据中 model structAddress通过personPtr字段与人员相关联。 因此, Address是一个主要的数据结构。 如果我正确理解您的意图,您想打印有关此人的信息,然后是他/她的地址。
为此,您需要进行一些更改。 首先,您应该将 Address 结构体传递给 print function,因为它包含所有可用信息,包括指向此人的指针。 其次,您应该使用指针访问您的个人信息: ptrAddress->ptrPerson-><field>
。 这是一个例子。
void outputAddress(struct structAddress *ptrAddress)
{
printf("\n\nOutput Address: \n");
// use ptrAddress->ptrPreson to accesss person information
printf("ptrPerson->name: %s", ptrAddress->ptrPerson->name);
printf("\nptrPerson->forename: %s", ptrAddress->ptrPerson->forename);
// use ptrAddress-> to access address fields.
printf("\nptrAddress->zip: %d", ptrAddress->zip);
...
return;
}
int main() {
...
outputAddress(&address1); // << use address1 here.
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.