C 函数、指针和数组

C中经常要写一个对数组进行操作的函数,下面介绍一下,数组、指针和函数的应用:

指针和数组:

#include <stdio.h>
#include <stdlib.h>
int sum(int *ar,int n);
int main()
{
    int a[10];
    int n=5,i;
    for(i=0;i<n;i++){
        scanf("%d",&a[i]);
    }
    printf("%d",sum(a,n));
    return 0;
}
int sum(int *ar,int n){
    int i,total=0;
    for(i=0;i<n;i++){
        total+=ar[i];
    }
    return total;
}

    代码中,sum()函数的参数是一个数组的名字,数组的名字代表数组首元素的地址,在这里是一个int 的地址,因此应该把它赋给一个类型为指向int的指针的形式参量,于是得到代码中的函数原型。

    用到数组时,往往需要知道何时开始和何时结束数组

第一种方式是把数组大小作为第二个参数传递给函数。

如上面那个代码 ↑

注:例子中可以用 int ar[]代替int *ar;(只不过int ar[]更强调这是一个数组)

第二种方式

#include <stdio.h>
#include <stdlib.h>
#define SIZE 10
int sump(int *start,int *end);
int main()
{
    int a[SIZE]={1,2,3,4,5,6,7};
    printf("%d",sump(a,a+SIZE));
    return 0;
}
int sump(int *start,int *end){

    int total=0;
    while(start<end){
        total+=*start++;//*和++优先级相等,但它在结合时是从右向左进行的
    }
    return total;
}

注:while循环中处理的是end所指向的位置之前的元素,即end实际指向的位置是数组之后的第一个位置,其是合法的。如果让end指向最后一个元素,就需要使用下面的代码,其不如上面的例子简洁

   printf("%d",sump(a,a+SIZE-1));

指针和多维数组:

——————————-

以上内容参考自《C Primer Plus》

祝你早日攒够失望,然后开始新的生活。
原文地址:https://www.cnblogs.com/LuRenJiang/p/6858406.html