C语言在一个函数里面定义了一个结构体,怎么在另外一个函数里面使用? C语言中,定义了一个结构体数组后,在一个函数中给数组赋值,如...

作者&投稿:诺辰 (若有异议请与网页底部的电邮联系)

在另外一个函数里面使用的源代码如下:

#include"stdio.h"

#include "conio.h" //-------添加这个头文件,因为getch()函数来自它,否则编译会有警告

struct student   /*定义结构体*/

{

void main()

{

void data_in(struct student putin[]);

void data_out(struct student *p);

void data_pout(struct student *s1);

data_in(pers);      /*调用指针输入函数*/

data_out(sp);     /*调用指针输出函数*/

data_pout(sp);   /*调用函数名输出函数*/

getch();  

 }

扩展资料

1、函数是C语言的基本组成元素,当我们调用一个函数时,需要明确函数名和实参列表。实参列表中的参数可以是常量、变量、表达式或者空,并且各参数之间要使用英文逗号分隔开来。

2、在C语言中,函数的定义是独立的,一个函数不能定义在另一个函数内部。但在调用函数时,可以在一个函数中调用另一个函数,这就是函数的嵌套调用。接下来我们通过一个案例来演示函数的嵌套调用。



函数里定义的结构体是局部变量,在这个函数外是不能使用的。

你要在函数外定义成全局变量。
例,函数外:
struct s{
int a;
}s1,s2;
这样的就定义了两个全局的结构体s1,s2,这两个结构体在所有函数中都可以使用,当然,使用它们的函数里,不能再定义相同名称的局部变量,否则使用的就是局部变量了。

  C语言在一个函数里面定义了一个结构体,在另外一个函数里面使用:
  struct tmp {
   int a;
   int b;
  };
  struct tmp c; //1. 采用全局变量
  int func1()
  {
   struct tmp c;

   func2(c); // 2. 采用传参
  }
  1. 定义成全局变量
  2. 通过传递参数
  3. 只能通过这两种方式

  tmp.h
  #ifndef TMP_H_
  #define TMP_H_
  struct Tmp {
   int a;
   int b;
  };
  extern struct Tmp c; //这里是main.c中定义的c的扩展,可以让包括这个头文件的文件中的函数 //都可以用这个变量
  #endif //TMP_H_
  把结构体写在tmp.h头文件中
  在main.c中定义
  struct Tmp c;

  在其它的.c文件中包含tmp.h,那么这个文件中的函数就可以用这个c了

struct tmp {

    int a;

    int b;

};

struct tmp c;    //1. 采用全局变量

int func1()

{

    struct tmp c;


    func2(c);    // 2. 采用传参

}

  1. 定义成全局变量

  2. 通过传递参数

  3. 只能通过这两种方式


tmp.h

#ifndef TMP_H_

#define TMP_H_

struct Tmp {

    int a;

    int b;

};

extern struct Tmp c;    //这里是main.c中定义的c的扩展,可以让包括这个头文件的文件中的函数                                        //都可以用这个变量

#endif //TMP_H_

把结构体写在tmp.h头文件中

在main.c中定义

struct Tmp c;


在其它的.c文件中包含tmp.h,那么这个文件中的函数就可以用这个c了



C语言在一个函数里面定义了一个结构体,怎么在另外一个函数里面使用?~

函数里定义的结构体是局部变量,在这个函数外是不能使用的。
你要在函数外定义成全局变量。
例,函数外:
struct
s{
int
a;
}s1,s2;
这样的就定义了两个全局的结构体s1,s2,这两个结构体在所有函数中都可以使用,当然,使用它们的函数里,不能再定义相同名称的局部变量,否则使用的就是局部变量了。

变量名.结构体元素,例如struct student{int age;int number;},这是结构体类型,然后定义变量数组struct student sr[10],如果要调用数组第一个元素中的年龄,sr[0].age就可以了

C语言:可以在一个函数中定义另一个函数为什么不对?谢谢
答:则在主函数中调用的子函数(自定义函数)将在主函数之前声明其存在。Void fun(int n,int m);在大多数编程语言中,必须声明(或在使用之前定义)变量、函数(过程)、结构、类、对象等。如果在使用其函数之前没有声明或定义编译,则编译失败。它还报告错误:未定义的变量或函数,等等。

c语言中,一个文件中的函数想用另一个文件中定义的结构体怎么办,用ex...
答:结构体在头文件中定义,然后要使用该结构体的源文件直接导入该头文件即可。例:结构体Node //Node.h文件#ifndef NODE_H#define NODE_Hstruct Node{ int data; Node* next;};#endif//main.cpp文件#include "Node.h"int main(){ struct Node n; n.data = 0; n.next = NULL...

C语言自定义函数返回一个数组的问题
答:方法1:利用全局变量 分析:全局变量作为C语言的一个知识点,虽然我们都了解它的特点,但在实际教学过程中应用得并不是很多。由于全局变量的作用域是从定义变量开始直到程序结束,而对于编写有多个返回值的C语言函数,我们可以考虑把要返回的多个值定义成全局变量。当函数被调用时,全局变量被更改,我们再...

c语言,在函数外定义了一个数组,在主函数内对该数组输入,之后在子函数...
答:应该是你的变量定义有问题。例如程序:include <stdio.h>#include <string.h>char a[5]={'a','b','c','d','e'};void fun(char a[]){gets(a);}int main(){gets(a);fun(a);puts(a);return 0;}//运行示例:初始定义为abcde,主函数输入fghij,函数再次输入klmno,输出结果为klm...

...编写完成对学生相关信息的要求:1.定义一个结构体类型student,其中包 ...
答:define STU_NUM 10 /*宏定义学生的数量*/ struct student /*定义一个结构体用来存放学生学号、三门课成绩、总分及平均成绩*/ { char stu_id[20]; /*学生学号;*/ float score[3]; /*三门课成绩;*/ float total; /*总成绩;*/ float aver; /*平均成绩;*/ };/*排序用一个函数来...

C语言定义一个具有5个元素的结构体数组,并进行初始化。写两个函数:1...
答:include <stdio.h>struct s{int num;char name[10];float score;};int main(void){struct s stu[5] = {{1,"xiaozhao",50.5},{ 2, "xiaoqian", 60.5 },{ 3, "xiaosun", 75.5 },{ 4, "xiaoli", 15.5 },{ 5, "xiaozhou", 15.5 }};float var = 0.0f; for (int i...

定义一个结构体最后为什么要再加一个分号
答:do{ .}while();//这边为什么要;号一样···这是C语言里规定的···大家都没有办法 汗。这个我给你解释下吧 因为for()下面肯定有语句 while()也有语句,他没有语句的时候就需要用;,表示空语句 你看do while。while后面没有语句了。为了防止他把下面的当成他的语句,所以加一个;,表示结束...

为什么C++语言不允许在一个函数的定义中再定义另一个函数? 举个例子说 ...
答:一般函数的声明与定义放在不同文件中,声明的头文件中只有嵌套定义的外层函数,嵌套在函数f中的函数是找不着的。。。 追问 声明的头文件中只有嵌套定义的外层函数,嵌套在函数f中的函数是找不着的。。。 这句话是什么意思啊? 举个例子解释一下 追答 上面例子中,头文件中只有函数f的声明,没有函数g的声明,而在...

在C语言中,如果在一个函数的复合语句中定义了一个变量,则该变量...
答:在C语言中,如果在一个函数的复合语句中定义了一个变量,则该变量()A.只在该复合语句中有效,在该复合语句外无效 B.在该函数中任何位置都有效 C.在本程序的原文件范围内均有效 D.此定义方法错误,其变量为非法变量 正确答案:A

c++类里面定义结构体怎么做
答:根据你的意思,可以如下定义:struct Student{ char number[20];char name[20];float math;float english;float history;};class a{ private:struct Student stu;}