zoukankan      html  css  js  c++  java
  • 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》

    祝你早日攒够失望,然后开始新的生活。
  • 相关阅读:
    sql
    Java 反射
    Java 泛型
    Java 数组小记
    Java 实现二叉树
    Maven的环境配置
    用于解决easui 保存时候,前台传参是空字符串不null
    SpringMVC
    SpringMVC
    解决MySql varchar类型的数字排序
  • 原文地址:https://www.cnblogs.com/LuRenJiang/p/6858406.html
Copyright © 2011-2022 走看看