关于传递指针给函数的未解疑问

之前在菜鸟教程复习C++,着重看了一下比较难的指针,其中传递指针给函数这一部分有一些疑惑未解,希望看到的人可以帮忙给个解答。

程序代码如下

#include <iostream>
using namespace std;

// 函数声明
double getAverage(int *arr, int size);

int main ()
{
   int balance[5] = {1000, 2, 3, 17, 50};  // 带有 5 个元素的整型数组
   double avg;

   avg = getAverage( balance, 5 ) ;    // 传递一个指向数组的指针作为参数

   cout << "Average value is: " << avg << endl; // 输出返回值

   return 0;
}

double getAverage(int *arr, int size)    //再次运用函数,使得sum得以累加
{
  int    i, sum = 0;
  double avg;          

  for (i = 0; i < size; ++i)
  {
    sum += arr[i];
   }

  avg = double(sum) / size;    //求平均

  return avg;
}

代码中将balance传入函数,此时balance为数组,传入函数的形参中声明arr是一个指针,指向balance数组的第一个元素但函数中给sum赋值时,直接采用sum+=arr[i]来进行赋值,这里的arr为什么变成了数组,而不是原先的指针?

原文地址:https://www.cnblogs.com/stuBlogs/p/12099659.html

时间: 2024-10-19 20:50:22

关于传递指针给函数的未解疑问的相关文章

C 传递指针给函数

C 语言允许您传递指针给函数,只需要简单地声明函数参数为指针类型即可. 下面的实例中,我们传递一个无符号的 long 型指针给函数,并在函数内改变这个值: 1 #include <stdio.h> 2 #include <time.h> 3 4 void getSeconds(unsigned long *par); 5 6 int main () 7 { 8 unsigned long sec; 9 10 11 getSeconds( &sec ); 12 13 /* 输

无法把指针变量本身传递给一个函数

例1: #include<stdio.h> #include<stdlib.h> void fun(char*p) { char c = p[3];//或者是char c=*(p+3); } int main() { char*p2 = "abcdefg"; fun(p2); system("pause"); return 0; } 错误,因为无法把指针变量本身传递给一个函数 应该对实参做一份拷贝并传递给被调用函数,即对p2做一份拷贝,假设其

向函数中传递指针和传递指针的引用的区别

如果是传递指针,那么会先复制该指针,在函数内部使用的是复制后的指针,这个指针与原来的指针指向相同的地址,如果在函数内部将复制后的指针指向了另外的新的对象,那么不会影响原有的指针:但 是对于传递指针应用,如果将传递进来的指针指向了新的对象,那么原始的指针也就指向了新的对象,这样就会造成内存泄漏,因为原来指针指向的地方已经不能再 引用了,即使没有将传递进来的指针指向新的对象,而是在函数结束的时候释放了指针,那么在函数外部就不能再使用原有的指针了,因为原来的内存已经被释放了 看个例子: #includ

C++ 指针函数的详解

1.函数指针 (1)一般来说函数通常包括一系列指令,通过编译后,在内存中占据了一块存储空间. 它有一个起始地址,这个起始(入口)地址就称为函数的指针. (2)主函数在调用子函数时,就是让程序转移到函数的入口地址开始执行. (3)我们可以定义一个指针变量用来指向函数,然后通过使用该指针变量调用此函数. 指向函数的指针:就是能够存放某个函数入口地址的指针变量. 总结了一下,函数指针有两个用途:一个是调用函数,另一个是做函数的参数 函数指针定义的一般形式: 数据类型     (*指针变量名)(参数表)

php中的PDO函数库详解

PHP中的PDO函数库详解 PDO是一个“数据库访问抽象层”,作用是统一各种数据库的访问接口,与mysql和mysqli的函数库相比,PDO让跨数据库的使用更具有亲和力:与ADODB和MDB2相比,PDO更高效.目前而言,实现“数据库抽象层”任重而道远,使用PDO这样的“数据库访问抽象层”是一个不错的选择. PDO中包含三个预定义的类 PDO中包含三个预定义的类,它们分别是 PDO.PDOStatement 和 PDOException. 一.PDO PDO->beginTransaction(

嵌入式Linux C语言(三)——指针与函数

嵌入式Linux C语言(三)--指针与函数 指针对函数的功能有巨大的贡献,指针能够将数据传递给函数,并且允许函数对数据进行修改.指针对于函数的作用主要有两方面:将指针传递给函数和声明函数指针. 一.程序的栈和堆 程序的栈和堆是C语言程序运行的运行时元素. 1.程序栈 程序栈是支持函数执行的内存区域,通常和堆共享一块内存区域,通常程序栈占据内存区域的下部,堆用内存区域的上部.程序栈存放栈帧,栈帧存放函数参数和局部变量.调用函数时,函数的栈帧被推倒栈上,栈向上长出一个栈帧,当函数终止时,函数的栈帧

腾讯云无服务器云函数架构精解

欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 分享人:陈杰,腾讯云架构平台部技术专家,10年云计算经验,现供职于腾讯架构平台部,负责弹性计算及云函数技术研发,致力于提供领先的基础设施平台以提升资源利用率及优化提升程序员开发运维效率. 继虚拟机,容器技术,无服务器化成为新的行业热点,无服务器云函数可以让用户无需关心服务器的部署运营,只需开发最核心的业务逻辑,即可实现上线运营,具备分布容灾能力,可依据负载自动扩缩容,按照实际调用次数与时长计费.本次主要分享腾讯云无服务器云函数在技术实

函数 MultiByteToWideChar() 详解

函数原型: int MultiByteToWideChar( UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cchMultiByte, LPWSTR lpWideCharStr, int cchWideChar ); 补充:如果ANSI代码页允许在不同的计算机上不相同,甚至在单台计算机上不一样,将会导致数据崩溃.为了代码页一致性,应用程序应该使用Unicode编码,如UTF-8或者UTF-16,而不是使用特殊的代码页,除了早期标

函数指针(函数指针作为函数形参/函数类型作为函数返回类型)

函数指针是指向函数的指针变量. 因此"函数指针"本身首先应是指针变量,只不过该指针变量指向函数.这正如用指针变量可指向整型变量.字符型.数组一样,这里是指向函数.如前所述,C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址.有了指向函数的指针变量后,可用该指针变量调用函数,就如同用指针变量可引用其他类型变量一样,在这些概念上是大体一致的.函数指针有两个用途:调用函数和做函数的参数. 1 #include<stdio.h> 2 int max(int