代码编织梦想

c语言中形参与实参:

形参 form parameter
实参 real parameter
出现在函数定义中的参数,就叫形参
出现在函数调用中的参数,就叫实参
函数定义:


int max( int a , int b ) //这里的a,b就是形参
{
//在函数中,形参就可以当作是一个局部变量。
if ( a>b ) return a;
else return b;
}
函数调用
int main()
{
int a=3,b=5 ;

printf( "max=%d\n" , max(a,b) ); //这里的a,b就是实参 。
return 0;
}

C中的函数参数传递是传递变量的数值,因此,这里相当于调用 max(3,5) 而子函数中收到的就会是 3 5这两值,而与ab变量没有关系。

  • 形参定义时编译系统并不为其分配存储空间,也无初始值,只有在函数调用时,临时分配存储空间,接受来自实参的值。函数调用结束,内存空间释放,值消失
  • 实参可以是常量,变量和表达式,但必须在函数调用前有明确的值。
  • 实参与形参必须类型相同且个数相同。

变量的作用域:

局部变量:
在一个函数内部定义的变量或复合语句内定义的变量称为局部变量。任意一个函数都不能访问其他函数中定义的局部变量,因此在不同函数之间可以定义同名 的局部变量,不会发生冲突。

-主函数中定义的变量,也属于局部变量,其作用范围同样仅限于主函数内。

-形参也是局部变量

-编译时,编译系统不为局部变量分配内存单元,而是在程序运行中,当局部变量所在函数被调用时,编译系统才根据需要临时分配内存。调用结束,内存空间释放

全局变量:
在所有函数(包括main函数)外定义的变量即为全局变量,全局变量存储在静态存储区中,其作用域是从定义的地方开始到本源文件结束。若定义时不进行初始化,系统将自动赋予其初值,数值型赋予0,字符型赋予’\0’.

-当一个函数返回多个值时,使用全局变量更为有效

#define PI 3.14  //宏定义 
float c,area;  //全局变量
void f(float r)
{c=2*PI*r;
area=PI*pow(r,2);
}
main()
{float r;  //局部变量
printf("input r:");
scanf("%f",&r);
f(r);
printf("%f,%f",c,area);
}

-如果在同一个源文件中,全局变量和局部变量同名,则在局部变量的作用范围内,全局变量不起作用

int a=3,b=5;
int max(int x,int y)
{
int c;
c=x>y?x:y;  //a>b ? a : b –>若?前结果为真则运算结果为a,反之运算结果为ba>b ? a : b –>若?前结果为真则运算结果为a,反之运算结果为b
return c;
}
main()
{
int a=8;  //局部变量和全局变量a同名,因位在main函数中,所以使用的是main函数中变量a的值。
printf("%d",max(a,b));
}

-全局变量在函数编译阶段分配内存,在程序的执行阶段不释放,因此全局变量只进行一次初始化,可不赋值

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/songyuchaoshi/article/details/106277094

初学C语言,你仔细练过这些题目吗?【代码实现细节讲解】-爱代码爱编程

学习编程绝对不能空谈理论,最终还是落实到代码上,这样编程能力才提升得快。 先从一个程序入手: 键盘输入一个圆的半径(r<=100),计算该圆的面积。要求输出的精度保留到小数点后三位。 【输入】输入一个整形数(圆的半径r) 【输出】输出一个浮点数(圆的面积) 圆的面积S=PI * r * r 将实现过程代码化,如下: #include<st

#C语言#对选择排序的一点理解-爱代码爱编程

题目:在键盘上输入n个整数,将他们按照从大到小的次序排序后输出。要求采用选择排序法。 选择排序的两种算法(个人的理解): 第一种-------先找到最大值再交换 #include<stdio.h> /大到小选择排序 --先找到这些数据里面的最大值,(用下标更新最大值) 判断整个最大值是否等于第i个数,不等于就交换–大到小/ int mai

C语言学习日志3-爱代码爱编程

欧几里德算法(辗转相除法)求最大公约数 #include<stdio.h> #include<math.h> #include<string.h> int main() { int a = 0; int b = 0; int c = 0; scanf_s("%d", &a); scanf_s("%d", &a

leetcode 1371.每个元音包含偶数次的最长子字符串(find the longest substring containing vowels in even counts)C语言-爱代码爱编程

leetcode 1371.每个元音包含偶数次的最长子字符串(find the longest substring containing vowels in even counts)C语言 1.description2.solution 1.description 给你一个字符串 s ,请你返回满足以下条件的最长子字符串的长度:每个元音字母,

函数指针求三个数最大值-爱代码爱编程

利用函数指针求三个数的最大值,如输入1,2,3三个数,输出3。 具体代码如下: #include<iostream> using namespace std; //判断最大值 int Max(int *p1,int *p2,int *p3) { int max=*p1; if(max<*p2) ma

指针函数倒序输出数组-爱代码爱编程

建立两个函数,第一个用来颠倒数组,第二个用来输出数组。 代码如下: #include<iostream> using namespace std; //颠倒数组 int* reverse(int *list,int size) { int i,t; for(i=0;i<size/2;i++){ t