利用形参与实参传递数据

本文探讨了C语言中形参作为指针和数组时如何通过地址传递数据。无论是形参表现为指针还是数组,实参都需要提供地址,如变量地址、数组首地址等。实质上,形参数组的本质也是指针。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

形参是指针

当形参是指针时,实参应该是地址。
地址型表达式:其代表的地址用来为形参指针赋值,可以是变量的地址、数组首地址、指针数组元素、已经赋值的指针变量

形参是数组(实际上并不是数组,其本质为指针)

当形参是数组时,实参应该是地址。实参可以是变量的地址、数组首地址、指针数组元素、已经赋值的指针变量。

其实上边两种情况是一种情况,即形参为指针时。

#include "stdio.h"
#include "stdlib.h"
#include "string.h"

//void printArray(int a[], int num)
void printArray(int *a, int num)
{
	int i = 0;
	for (i; i < num; i++)
	{
		printf("%d ", a[i]);
	}
}

//void sortArray(int a[], int num)
void sortArray(int *a, int num)
{
	//实参的a 和 形参的a 的数据类型本质不一样
	//形参中的数组 ,编译器会把它当成指针处理 这是C语言的特色
	int i,j,tmp;
	for(i=0;i<num;i++)
		for (j = i + 1; j < num; j++)
		{
			if (a[i] > a[j]) {
				tmp = a[i];
				a[i] = a[j];
				a[j] = tmp;
			}
		}
}


//数组做函数参数退回为一个指针, 
//1 正确做法:把数组的内存首地址和数组的有效长度传给被调用函数
//2 //实参的a 和 形参的a 的数据类型本质不一样
	//形参中的数组 ,编译器会把它当成指针处理 这是C语言的特色
	//排序 本质也剖析 
//3 形参写在函数上,和写在函数内是一样的,只不过是具有对外的属性而已.
void main()
{
	int a[] = {22, 12, 34, 56, 23, 45, 65, 33};
	int num = 0;
	num = sizeof(a) / sizeof(a[0]);
	printf("num:%d\n", num);

	printArray(a, num);
	sortArray(a, num);
	printArray(a, num);

	system("pause");
	return;
}

/*
num:8
22 12 34 56 23 45 65 33 12 22 23 33 34 45 56 65
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值