传入一维数组到函数 Passing 1D array to function

Since arrays are always passed by reference, all changes made to the array elements inside the function will be made to the original array.

int ProcessValues (int [], int ); // works with ANY 1-d array

Example:

#include <iostream>
using namespace std;
int SumValues (int [], int ); //function prototype

void main( )
{
  int Array[10]={0,1,2,3,4,5,6,7,8,9};
  int total_sum;
  total_sum = SumValues (Array, 10); //function call
  cout <<”Total sum is “ <<total_sum;
}

int SumValues (int values[], int num_of_values) //function header
{
  int sum = 0;
  for( int i=0; i < num_of_values; i++)
    sum+=values[i];
  return sum;
}

The only way to protect the elements of the array from being inadvertently changed, is to declare an array to be a const parameter.

#include <iostream>
using namespace std;
int SumValues (const int [], int); //function prototype

int main( )
{
  const int length =10;
  int Array[10]={0,1,2,3,4,5,6,7,8,9};
  int total_sum;
  total_sum = SumValues (Array, length); //function call
  cout <<”Total sum is “ <<total_sum;
  return 0;
}

int SumValues (const int values[], int num_of_values) //function header
{
  int sum = 0;
  for( int i=0; i < num_of_values; i++)
    sum+=values[i];
  return sum;
}

Reference:

http://stackoverflow.com/questions/23035407/passing-1d-and-2d-arrays-by-reference-in-c

http://doursat.free.fr/docs/CS135_S06/CS135_S06_8_1D_Arrays2.pdf

时间: 2024-11-03 21:32:52

传入一维数组到函数 Passing 1D array to function的相关文章

利用递归把多维数组转为一维数组的函数

函数名称:array_multi2single 函数原形:array array_multi2single(array) 实现功能:把一个多维数组的数值存放到一维数组中,不保存Key. < ?php function array_multi2single($array) {     static $result_array=array();     foreach($array as $value)     {         if(is_array($value))         {    

一维数组和二维数组传出函数

#define LOCAL #include<cstdio> #include<cstdlib> #include<iostream> using namespace std; typedef int ElemType; const int maxSize=10; //传入函数的一维数组经过函数之后数组元素发生变化 int REV(int *a,int x,int y) { int i=x,j=y; while(i<j) { int temp=a[i]; a[i]

c语言一维数组做参数传递给函数:

今天碰到了一维数组做函数参数的问题,那就扒一扒这个问题: 首先抛结论: 1:C语言中,当一维数组做函数参数时,编译器总是把它解析成一个指向其首元素的指针. 2:实际传递的数组大小与函数形参指定的数组大小没有关系. 然后举例说明: 下面是一个元素交换函数,把数组array[i]和array[j]交换位置.注意看数组是怎么传递给函数的. 正确的写法1: 解释说明:编译器把array解析成指向整形元素的指针,也就是数组的首地址,方括号中加不加指定数字都可以,因为编译器根本不看,因此最好不写,以免引起误

数组作为函数参数

一.一维数组名作函数参数 用数组名作函数参数,应该在主调函数和被调函数分别定义数组,例如 <span style="font-size:18px;">void main() { void f(int b[10]);//void f(int b[]) int a[10]; f(a); }</span> 在被调用函数中声明了形参数组的大小为10,但在实际中,指定其大小是不起任何作用的,因为C语言编译对形参数组大小不做检查,只将实参数组的首元素地址传给形参数组.形参数

将二维数组转为一维数组的2种方法

如何将下面的二维数组转为一维数组. 代码如下: $msg = array( array( 'id'=>'45', 'name'=>'jack' ), array( 'id'=>'34', 'name'=>'mary' ), array( 'id'=>'78', 'name'=>'lili' ), ); 第一种方法: 代码如下: foreach($msg as $k => $v){ $ids[] = $id; $names[] = $name; } 第二种方法: 代

PHP中的数组(二)常用数组处理函数

数组的相关处理函数    一.数组键/值操作有关的函数        1.array_values()   无论是关联的还是索引的返回的都是索引数组 1 <?php 2 $lamp=array("os"=>"Linux","webserver"=>"Apache","db"=>"Mysql","language"=>"php&q

C语言 数组做函数参数退化为指针的技术推演

//数组做函数参数退化为指针的技术推演 #include<stdio.h> #include<stdlib.h> #include<string.h> //一维数组做函数参数退化为指针的技术推演 void printfA(char * strarr[3]); //计算机中,数组都是线性存储,二维数组元素也是一个个的排列的 //例如: 1,2,3,4,5,6,7,8,9 像这组数据 我们可以认为是一维数组 int a[9]={1,2,3,4,5,6,7,8,9}; //也

PHP如何判断一个数组是一维数组或者是二维数组?用什么函数?

如题:如何判断一个数组是一维数组或者是二维数组?用什么函数? 判断数量即可 <?php if (count($array) == count($array, 1)) { echo '是一维数组'; } else { echo '不是一维数组'; } PHP手册: int count ( mixed $var [, int $mode ] )  --  计算数组中的单元数目或对象中的属性个数  如果可选的 mode 参数设为 COUNT_RECURSIVE(或 1),count() 将递归地对数组

输入6个人的成绩放入到一个一维数组中,然后打印出平均分,最后按成绩 从大到小打印。三个功能(输入是一个函数,求平均分是一个函数,排序是一个 函数)都用函数实现,最后在main方法中调用。

/*5.输入6个人的成绩放入到一个一维数组中,然后打印出平均分,最后按成绩从大到小打印.三个功能(输入是一个函数,求平均分是一个函数,排序是一个函数)都用函数实现,最后在main方法中调用.*/ #include <stdio.h> int inputScore(){ int score; scanf("%d",&score); return score;} double avg(int scores[],int length){ int i,score = 0;