用指针来代替return返回参数

C语言指针使用笔记

学习了一段时间指针的使用,发现照着教材抄不知道自己的掌握程度,遂拿着源代码改了一下。以下代码完成了对10个数的求和,求和函数通过获取变量marbles(数组名)和SIZE(数组长度)来求和;我把该程序的子函数sump改成void类型,使用指针来传递结果。
《C Primer Plus》一段原始代码如下:

#include 
#define SIZE 10
int sump(int * start, int * end);
int main (void)
{
	int marbles[SIZE] = {20, 10, 5, 39, 4, 16, 19, 26, 31, 20};
	long answer;

	answer = sump(marbles, marbles + SIZE);
	printf("The total number of marbles is %1d.\n", answer);
	return 0;
}

int sump (int * start, int * end)
{
	int total;
	while (start < end)
	{
		total += *start;
		start ++;
	}
	return total;
}

修改后的代码如下:

#include 
#define SIZE 10
void sump(int *start, int *end, int *ptotal);
int main ()
{
	int marbles[SIZE] = {20, 10, 5, 39, 4, 16, 19, 26, 31, 20};
	long answer;
	int psum;
	psum = 0;
	sump(marbles, marbles + SIZE, &psum);
	printf("The total number of marbles is %d.\n", psum);
	return 0;
}

void sump (int * start, int * end, int * ptotal)
{
	
	while (start < end)
	{
		*ptotal += *start;
		start++;
	}
	
}

结果都显示为:

The total number of marbles is 190.

说明修改成功。虽然我这样修改没什么意义,但该程序充分证明了指针在主从函数间传递参数的方便之处。
新手操作,见谅。

你可能感兴趣的:(用指针来代替return返回参数)