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》

    祝你早日攒够失望,然后开始新的生活。
  • 相关阅读:
    YTU 1002: Home Work
    C++拷贝构造函数(深拷贝,浅拷贝)
    深入探讨this指针
    C++中关于strtok()函数的用法
    STL笔记之【map之移除元素】
    进程结束后,进程的所有内存都将被释放,包括堆上的内存泄露的内存。
    数组指针和指针数组的区别
    sizeof()用法汇总
    文件描述符和文件指针的区别
    字符集、字符编码、XML中的中文编码
  • 原文地址:https://www.cnblogs.com/LuRenJiang/p/6858406.html
Copyright © 2011-2022 走看看