簡體   English   中英

將struct傳遞給函數C

[英]Pass struct to function C

首先,我是C編程的新手,我想知道如何通過函數傳遞struct

例如 :

typedef struct
{
 char name[20];
}info;

void message()
{
 info n;

 printf("Enter your name : ");
 scanf("%s", &n.name);
}

我想將輸入的名稱傳遞給此函數,以便它可以打印出名稱。

void name()
{
printf("Good morning %s", ...);
}

是的,您只需按值傳遞結構即可。 這將創建數據的副本:

void name(info inf)
{
   printf("Good morning %s", inf.name);
}

創建一個唯一成員是數組的結構(如您所做的)是“按值傳遞數組”的已知方法(通常是不可能的)。

對於大型結構,通常只傳遞一個指針:

void name(info *inf)
{
   printf("Good morning %s", inf->name);
}

但是,對指針目標的更改將對調用者可見。

創建以“ info”(結構)為參數的函數定義:

void name (info);

將該函數定義為:

void name(info p) {
    printf("Good morning %s", p.name);
}

然后適當地調用該函數:

name(n);

好吧,如果您只想打印名稱,則可以傳入一個指向字符串本身的指針。

void name(char *str)
{
  printf("Good morning %s", str);
}

叫作name(n.name);

但是,讓我們假設這是一個簡化的示例,並且您確實希望訪問函數內部的整個結構。 通常,您將傳遞一個指向該結構的指針。

void name(info *ptr)
{
  printf("Good morning %s", ptr->name);
}

稱為name(&n);

除了使用指針,您還可以按值傳遞整個結構,但這並不常見,因為它會臨時復制整個結構。

void name(info inf)
{
  printf("Good morning %s", inf.name);
}

稱為name(n);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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