C语言指针使用笔记
学习了一段时间指针的使用,发现照着教材抄不知道自己的掌握程度,遂拿着源代码改了一下。以下代码完成了对10个数的求和,求和函数通过获取变量marbles
(数组名)和SIZE
(数组长度)来求和;我把该程序的子函数sump改成void类型,使用指针来传递结果。
《C Primer Plus》一段原始代码如下:
#include <stdio.h>
#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 <stdio.h>
#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.
说明修改成功。虽然我这样修改没什么意义,但该程序充分证明了指针在主从函数间传递参数的方便之处。
新手操作,见谅。