学习C语言的第16天

函数中的形参和实参

1)、形参出现在函数的定义中,在函数体内都可以使用,离开该函数则不能使用。

2)、实参出现在主函数中,进入被调函数后,实参也不能使用。

3)、实参变量对形参变量的时间传递是“值传递’',即单向传递,只由实参传递给形参,而不能由形参传回给实参。

4)、实参单元与形参单元是不同的单元。调用结束后,形参单元被释放,函数调用结束返回主调函数后则不能再使用该形参变量。实参单元仍保留并维持原值。在执行一个被调用函数时,形参的值如果发生改变,并不会改变主调函数中实参的值。

错误交换

#include<stdio.h>
 void swap(int a,int b)
{
    int temp=a;
    a=b;
    b=temp;
}
int main()
{
    int a=10;
    int b=20;
    swap(a,b);
    printf("a=%d\nb=%d",a,b);
    return 0;
}
输出结果:a=10
    	b=20

正确交换

#include<stdio.h>
 void swap(int a,int b)
{
    int temp=a;
    a=b;
    b=temp;
     printf("a=%d\nb=%d",a,b);
}
int main()
{
    int a=10;
    int b=20;
    swap(a,b);
    return 0;
}
输出结果:a=20
    	b=10

**错误原因:**在swap函数中,传递的实参是a和b的副本,而不是原始的变量a和b。因此在调用swap函数后,在函数内部操作的只是这两个副本的值,而不会影响a和b原始的值。

字符串的比较

#include<stdio.h>
int my_strcmp(char ch1[],char ch2[])
{
	int i=0;
	while(ch1[i]==ch2[i])
	{
        \\判断是否到字符串结尾
		if(ch1[i]=='\0')
		{
			return 0;
		}
		i++;
	}
	return ch1[i]>ch2[i]?1:-1; 
}
int main()
{
    \\比较两个字符串 如果相同返回0 如果不同返回1-1
	char ch1[]="hello";
	char ch2[]="hallo";
    \\返回值赋值给value来判断字符串是否相同8
	int value=my_strcmp(ch1,ch2);
	if(value==0)
	{
		printf("两个字符串相同"); 
	}
	else
	{
		printf("两个字符串不同"); 
	 } 
	 return 0; 
}

无参函数调用

​ 如果是调用无参函数,则不能加上“实参”,**但括号不能省略

**

​```c

​```

\\函数定义

{

}

int main()

{

\\函数调用

test()\\正确,()不能省略

test(250)\\错误,函数定义时没有参数

return 0}
#include<stdio.h>
int fun()
{
	printf("hello");
}
int main()
{
	fun();
	return 0;
}
输出结果:hello

冒泡排序函数版

#include<stdio.h>
void bubblesort(int arr[],int len)
{
	for(int i=0;i<len-1;i++)
	{
		for(int j=0;j<len-1-i;j++)
		{
			if(arr[j]>arr[j+1])
			{
				int temp=arr[j];
				arr[j]=arr[j+1];
				arr[j+1]=temp;
			}
		}
	}
}
int main()
{
	int arr[]={1,3,5,7,8};
	bubblesort(arr,sizeof(arr)/sizeof(arr[0]));
    \\sizeof(arr)/sizeof(arr[0])来获取数组的大小,即得到数组元素个数
	for(int i=0;i<5;i++)
	{
		printf("%d\n",arr[i]);
	}
	return 0;
 } 
输出结果:1
    	3
    	5
    	7
    	8
  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值