zoukankan      html  css  js  c++  java
  • 指针问题

    易出错点:

    计算数组的元素和(错误)

    int sum(int a[]) {

      int ans = 0;

      for(int i = 0; i < sizeof(a); i++)

        ans += a[i];

    return ans; }

    这个函数是错误的,因为sizeof(a)无法得到数组的大小。为什么会这样?因为把数组作 为参数传递给函数时,实际上只有数组的首地址作为指针传递给了函数。换句话说,在函数 定义中的int a[]等价于int *a。在只有地址信息的情况下,是无法知道数组里有多少个元素 的。正确的做法是加一个参数,即数组的元素个数。

    正确代码:

    int sum(int* a, int n) {

      int ans = 0;

      for(int i = 0; i < n; i++)

        ans += a[i];

    return ans; }

    在上面的代码中,直接把参数a写成了int* a,暗示a实际上是一个地址。在函数调用时a 不一定非要传递一个数组,例如:

    int main() {

      int a[] = {1, 2, 3, 4};

      printf("%d ", sum(a+1, 3);

      return 0;

    }

    注意,这样算出来的是2+3+4。a+1指的是起始地址为啊a【1】而不是a【0】。

  • 相关阅读:
    蓝桥杯程序设计 剪格子
    sql中 1<> 1=1的用处
    form表单的6种提交方式
    js中添加监听,判断是什么事件
    angular iFrame加载资源问题
    报表往子报表里传入list
    struts 文件上传
    获取运行时的泛型类型
    Dao层抽取BaseDao
    SSH整合总结
  • 原文地址:https://www.cnblogs.com/LOW-ctfer/p/10387776.html
Copyright © 2011-2022 走看看