亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> C语言

C 结构和功能

C结构与函数

在本教程中,您将学习将结构变量作为参数传递给函数。您将通过示例学习从函数中返回结构。

与内置类型的变量类似,您也可以将结构变量传递给函数。


将结构体传递给函数

我们建议您在学习如何将结构传递给函数之前学习这些教程。

这是将结构传递给函数的方法

#include <stdio.h>
struct student {
   char name[50];
   int age;
};

// function prototype
void display(struct student s);

int main() {
   struct student s1;

   printf("Enter name: ");

   // read string input from the user until \n is entered
   // \n is discarded
   scanf("%[^\n]%*c", s1.name);

   printf("Enter age: ");
   scanf("%d", &s1.age);

   display(s1); // passing struct as an argument

   return 0;
}

void display(struct student s) {
   printf("\nDisplaying information\n");
   printf("Name: %s", s.name);
   printf("\nAge: %d", s.age);
}

输出

Enter name: Bond
Enter age: 13

Displaying information
Name: Bond
Age: 13  

这里,一个结构变量 s1 struct student 类型 被建造。变量传递给 display() 使用 display(s1); 的函数 声明。


从函数返回结构

以下是从函数返回结构的方法:

#include <stdio.h>
struct student
{
    char name[50];
    int age;
};

// function prototype
struct student getInformation();

int main()
{
    struct student s;

    s = getInformation();

    printf("\nDisplaying information\n");
    printf("Name: %s", s.name);
    printf("\nRoll: %d", s.age);
    
    return 0;
}
struct student getInformation() 
{
  struct student s1;

  printf("Enter name: ");
  scanf ("%[^\n]%*c", s1.name);

  printf("Enter age: ");
  scanf("%d", &s1.age);
  
  return s1;
}	

这里,getInformation() 使用 s = getInformation(); 调用函数 陈述。该函数返回 struct student 类型的结构 .返回的结构从 main() 显示 功能。

注意,getInformation() 的返回类型 也是struct student .


通过引用传递结构

您还可以通过引用传递结构(类似于通过引用传递内置类型的变量的方式)。我们建议您在继续之前阅读参考教程。

在按引用传递期间,结构变量的内存地址被传递给函数。

#include <stdio.h>
typedef struct Complex
{
    float real;
    float imag;
} complex;

void addNumbers(complex c1, complex c2, complex *result); 

int main()
{
    complex c1, c2, result;

    printf("For first number,\n");
    printf("Enter real part: ");
    scanf("%f", &c1.real);
    printf("Enter imaginary part: ");
    scanf("%f", &c1.imag);

    printf("For second number, \n");
    printf("Enter real part: ");
    scanf("%f", &c2.real);
    printf("Enter imaginary part: ");
    scanf("%f", &c2.imag);

    addNumbers(c1, c2, &result); 
    printf("\nresult.real = %.1f\n", result.real);
    printf("result.imag = %.1f", result.imag);
    
    return 0;
}
void addNumbers(complex c1, complex c2, complex *result) 
{
     result->real = c1.real + c2.real;
     result->imag = c1.imag + c2.imag; 
}

输出

For first number,
Enter real part:  1.1
Enter imaginary part:  -2.4
For second number, 
Enter real part:  3.4
Enter imaginary part:  -3.2

result.real = 4.5
result.imag = -5.6  

上述程序中,三个结构变量c1 , c2 以及 result 的地址 传递给 addNumbers() 功能。这里,结果 通过引用传递。

结果 addNumbers() 内的变量 被改变,结果 main() 内的变量 功能也随之改变。


C语言

  1. C# 结构
  2. C++朋友函数和朋友类
  3. C结构
  4. C 结构体和指针
  5. 结构和类的区别:用 C++ 示例解释
  6. C - 程序结构
  7. C - 数据类型
  8. C - 常量和文字
  9. C - 函数
  10. C++ 重载(运算符和函数)
  11. 电力变压器:功能、结构及更多
  12. 车床的15个不同零件及其功能