#include <stdio.h>
void main()
{
int data[] = {1,2,3,4,5,6,7,8,9,10};
int size = sizeof(data)/sizeof(data[0]);//(********)求数组中元素的个数
printf("%d\n",sizeof(data)); //此处求的是数组的大小
printf("%d\n",addArray(data,size)); //疑问:addArray函数的使用在声明之前?为什么还会编译成功?
//判断被调函数是否改变数组的值
printf("%d\n",data[1]); //确实改变了,看来只要传递的是指针,就能改变内存的值
}
//数组元素求和方法一
int addArray(int array[],int n)
{
int sum = 0;
int i;
printf("%d\n",sizeof(array));//此处求的是int型的大小,说明array是一个指向整型的指针,可见数组名和指针不同(用sizeof看出)
for(i = 0 ; i < n ; i++)
{
sum += array[i];
}
//既然数组作为参数传递是指针,那么在被调函数中修改数组,就会改变原来数组的值
array[1] = 9;
return sum;
}
//数组元素求和方法二
int addArray(int *array,int n) //直接定义指针
{
int sum = 0;
int i;
for(i=0;i<n;i++)
{
sum += *array++; //(*********)
}
return sum;
}