原链接:https://www.cnblogs.com/abella/p/10607061.html

有两种传递方法,一种是function(int a[]); 另一种是function(int *a)

这两种两种方法在函数中对数组参数的修改都会影响到实参本身的值!

对于第一种,根据之前所学,形参是实参的一份拷贝,是局部变量。但是数组是个例外,因为数组的数据太多了,将其一一赋值既麻烦又浪费空间,所以数组作为参数传递给函数的只是数组首元素的地址,数据还是在内存里的,函数在需要用到后面元素时再按照这个地址和数组下标去内存查找。也就是说后面的元素根本没到函数里来。所以,这里也不能在test()函数内部用sizeof求数组的大小,必须在外面算好了再传进来。

对于第二种,则是传址调用,无需再说。

这里还有几点需要注意:

1.在以上两个函数的形参前面加上const则表示整个数组只读,而不是只有首地址对应存储的数据只读。

2.第二种形式不能用C++11中的for...auto来循环打印。

3.数组的大小要用sizeof()来求,不能用.size(),因为.size()只有struct 或者union才能用, vector算是struct!

4.如果在函数内部又声明一个int* tmp类型的变量,然后把p赋值给tmp, 通过tmp修改数数组也是一样,都会修改实参本身!

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

#include <stdio.h>

#include <algorithm>

using namespace std;

 

void test1(int[], int size);

void test2(int *p, int size);

//void test2(const int *p, int size);

 

int main(void)

{

    int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

    int size = sizeof(a)/sizeof(int);

    /*这里打印出的a值与test1(),test2()中的p值相等

     *即地址值相同*/

    printf("%p \n", a);

    //test1(a, size);

    test2(a, size);

    int i;

    printf("main: ");

    for(i = 0; i < size; ++i)

    {

        printf("%d ", a[i]);

    }

}

 

void test1(int p[], int size)

{

    printf("%p \n", p);

    p[4] = 111;

    printf("test1: ");

    int i;

    for(i = 0; i < size; ++i)

    {

        printf("%d ", p[i]);

    }

    printf("\n");

}

 

void test2(int *p, int size)

{

    printf("%p \n", p);

    *(p+4) = 222;

    printf("test2: ");

    int i;

    for(i = 0; i < size; ++i)

    {

        printf("%d ", *(p+i));

    }

    printf("\n");

}

C++中数组作为形参的方法相关推荐

  1. java 数组 length 减少_java中数组有没有length()方法?string没有lenght()方法?

    java中数组有没有length()方法,求数组的长度可以使用数组的length属性. int length=arr.length;//求数组的长度 ------------------------- ...

  2. java中字符串和数组如何比较_[Java教程]javascript中数组和字符串的方法比较

    [Java教程]javascript中数组和字符串的方法比较 0 2016-07-19 23:00:05 ×目录[1]可索引 [2]转换 [3]拼接[4]创建[5]位置 前面的话 字符串和数组有很多的 ...

  3. 将java中数组转换为ArrayList的方法实例(包括ArrayList转数组)

    方法一:使用Arrays.asList()方法 1 2 String[] asset = {"equity", "stocks", "gold&quo ...

  4. java中数组的length_java中数组有没有length()方法?string没有lenght()方法?

    展开全部 java中数组是没有length()方法的,只有length属性,数组array.length返回62616964757a686964616fe4b893e5b19e313333663064 ...

  5. Javascript中数组去重的六种方法

    数组去重 第一种方法: 先对数组进行排序sort(),排好序,然后把数组的当前项和后一项进行比较,相同则使用数组的splice(相同的位置,1),但是为了防止数组塌陷,每次删除数组元素的时候要把i的值 ...

  6. javascript中数组的22种方法

    前面的话数组总共有22种方法,本文将其分为对象继承方法.数组转换方法.栈和队列方法.数组排序方法.数组拼接方法.创建子数组方法.数组删改方法.数组位置方法.数组归并方法和数组迭代方法共10类来进行详细 ...

  7. java 定义整数数组_JAVA中数组的正确定义方法是什么?

    数组是有序数据的集合,数组中的每个元素具有相同的数组名和下标来唯一地确定数组中的元素. §5.1一维数组 一.一维数组的定义 type arrayName[]; 其中类型(type)可以为Java中任 ...

  8. JS中数组和字符串的方法大全

    一.ECMScript 3的Array.prototype中定义的方法 1.join() 定义:将数组中所有的元素都转化为字符串拼接在一起,返回最后生成的字符串. 注意:不改变原数组 var a = ...

  9. c语言中数组作为形参

    数组可以做为函数形参传入进行处理,此时的数组变量退化为数组首元素的地址.其他读写操作可以类推,但是长度不能导入. int test(int array [],int len) {int sum = 0 ...

最新文章

  1. mysql gbk支持_让MYSQL支持GBK
  2. python常用内置函数总结-python 几个常用的内置函数
  3. The Digits String
  4. [android] 解决DatePickerDialog和TimePickerDialog控件取消按钮问题
  5. extjs的上传组件和HTML编辑器组件
  6. python2 pip安装包等出现各种编码错误UnicodeDecodeError: 'ascii'(/或者utf-8) codec can't decode byte 0xd2......
  7. Chrome浏览器无法观看视频,一直提示“adobe flash player 已过期” ?
  8. java scala_经过几天的Scala回归Java的10个最烦人的事情
  9. js执行环境作用域和闭包_JavaScript中执行上下文,提升,作用域和闭包的终极指南
  10. 2020级C语言大作业 - 王国保卫战
  11. Bootstrap面包屑导航
  12. 关于visual studio和vc版本之间的对应关系(更新至2020.07)
  13. iis打不开php,php出现404找不到网页错误 iis配置问题解决
  14. 教你如何用PQ魔法师调整硬盘分区大小
  15. 曲卉:高阶增长黑客实战营
  16. 吃饭。睡觉。打豆豆。
  17. css3循环360度图片旋转
  18. Dynamic GCN:Dynamic GCN: Context-enriched Topology Learning for Skeleton-based Action Recognition
  19. ubuntu的pycharm或程序卡主,强制关闭方法
  20. 【案例28】银行对账单管理-在线下载优化记录

热门文章

  1. word 标尺快捷键
  2. 百度前CTO刘建国任搜索网站爱帮网CEO
  3. 嵌入式 独立看门狗实验
  4. 规则引擎-drools-5-决策表
  5. 探索者系列_百度百科
  6. 打败苹果!小米销量跻身全球第二
  7. 修复LSP 解决不能上网问题
  8. 马斯克变身“基建狂魔”,Boring Company能打入中国市场吗?
  9. 利用FPGA仿真软件modelsim仿真波形显示图片
  10. 《论语》原文及其全文翻译 学而篇4