簡體   English   中英

Output 通過 function 以指針作為參數的結構值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM