
正文
C语言中子函数的变量,c语言函数里的变量
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
c语言中如何用子函数调用结构体中的变量实现数据的输入与输出。
用子函数实现结构体数据的输入与输出:对于多数子函数的输入与输出,有一定规律性可言。
方法1:void型不传值传址调用与声明。main中声明void date_in(),void date_pout()。函数定义前一定在main()前先定义结构体变量(全局变量),然后定义输入或输出程序段。此时再main()调用即可。
如下:
struct student
{
char name[20];
int old;
char sex;
}stu;
void date_in();
void main()
{ date_in();
}
void date_in()
{ scanf("%s%d/c,"stu.name,stu.old,stu.sex);
}时间问题程序有点简洁,有问题请追问,很乐意与你分享。
相关问答
Q1: C语言中,子函数定义了一个全局变量,运行一次数值改变,子函数再次运行,全局变量值会被初始化吗?
函数定义所谓“全局变量”的唯一方式就是把变量声明为static。static修饰的变量只会在函数第一次被调用时被初始化一次,并且超出函数作用域后不会被销毁。但其可见性仍然限于函数作用域内,而非全局。
Q2: C语言中,如何定义一个变量,使其既可以在主函数中使用,也可以在子函数中使用
把变量定义在主函数之外,即把变量设置为全局的。
一般我们都把变量的定义放在函数中,因此变量的范围就是在本函数中。可是如果定义在所有函数的外面,这样所有的函数中,都可以使用本变量。
你可以试一下这个程序。定义一个全局变量a,在主函数中进行赋值,然后在子函数中进行输出,结果是5.
#includestdio.h
int a;
void func();//函数声明
int main()
{
a=5;
func();
}
void func()
{
printf("%d\n", a);
}
+++++++++++++++++++++++++++++++++++++++++++++++++++
当然,除了定义全局变量这个方法,还有其他的方法,那就是指针。在子函数的参数中传递变量的地址,依然可以使用该变量,依然能够改变该变量的值。因为主函数和子函数的变量共用的是同一个地址的变量,因此,不管在哪个函数中对变量进行操作,都会影响变量。
比如下面这个程序,在主函数中a的值为5,将变量a的地址传递过去,子函数将该地址中的变量的值设置为3,然后主函数输出,结果却是3.
#includestdio.h
void func(int *b);//函数声明
int main()
{
int a=5;
func(a);//把变量a的地址传递过去
printf("%d\n", a);
}
void func(int *b)
{
*b=3; //将地址b中变量的值设置为3
}
Q3: 求助C语言子函数的局部变量定义
可以认为是局部变量,而且只在函数调用范围内有效 实际上函数的参数部分,是由系统在堆栈中临时申请的空间并存放参数数值的临时变量,函数返回后会同函数中申请的非静态变量一起被释放。
Q4: 子函数中得出的两个变量如何被主函数调用(C语言)
需要从函数中返回多于1个变量值时,最常用、也较简单的办法是在主调函数中声明变量,把变量的地址传给被调函数,在被调函数中通过指针直接操作主调函数中的变量。如此题中在主调函数中声明x和y,把x和y的地址(指针)传给被调函数。举例如下:
//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
void f(int *x,int *y){
*x=10;
*y=34;
}
int main(void){
int x,y;
f(x,y);
printf("x = %d\ny = %d\n",x,y);
return 0;
}








