关于二维指针参数

原创 2007年10月08日 19:46:00

    今天刚发现我竟然从来不知道二维指针参数的意义。记得在winpcap中看到过二维指针,当时以为他是多此一举。其实不然。如果传入的是一维指针,那么在函数中修改的就是该指针指向的地址的内容。因此,如果函数修改了指针指向的地址的内容,那么传入一维指针是没有问题的,但是如果函数要通过该指针传出来一个另外地址的内容,那么就不能使用一维指针了,因为在函数内部修改了该一维指针后,函数外面并不能得到这个值,当你在函数外面调用这个指针的时候,还是没修改前的值。

    记得在winpcap中,它没有要求在函数外面申请一块内存来存储返回的内容,但是确实返回了一块内容,那么只有是在函数内申请的内存,要传出这块内存来,就不能使用一维指针,而要使用二维指针。这样在函数内部修改指向的指针的内容(即(*p)的内容),才可以顺利地传出这块内存来。

    说到函数以指针为参数,其实传入的还是该指针的值(这个值是一块内存的地址,在win32下是32位的值),那么在函数里面,只能对这个地址所指向的内容做操作。同时,由于参数也是变量,那么在函数内部也能够对参数做修改(把它当作变量用),但是修改之后的变量,不能反应到函数外面,同时也不能够通过return返回。这一点在c++里面是明确禁止的,在c++里面不允许返回一个在函数里面声明的变量引用或是指针,因为当函数返回的时候,在它里面声明的变量都被清除,这样如果使用在函数里面声明的变量的引用或是指针的话,就会发生不可知的错误,虽然编译器没有说它是错的。在c里面可以返回一个在函数内声明的变量,因为当函数返回后这个地址依然存在。

    “ 函数的形参在函数调用时被实参初始化”。根据这句话的意思,函数的参数其实都是实参的副本,与实参没有关系,除了引用参数。但是实际上引用参数也是另一种形式的传值而已

C/C++二维数组的参数传递与二维指针

在进行函数参数传递的时候,常常需要把一组数据传递给函数,我们知道一维数组在进行函数参数传递的时候,以数组名作为形参就可以,因为数组名就表示该数组的首地址,在函数内部也直接可以用[]符号访问。 那么二维...
  • u013752202
  • u013752202
  • 2015年11月06日 23:06
  • 5433

二维指针、二维数组、指向数组的指针 函数参数传递

int arr[3][3] 的本质是指向数组的指针即 int  (*p)[3],所以二维数组名可以传递给foo( int (*arr)[3]) ,或者foo(int [][3]),但是不能传递给foo...
  • kimuwu
  • kimuwu
  • 2014年12月27日 22:44
  • 1882

指针数组,数组指针与二维数组剖析

int *p[3]与int (*p)[3]的区别 *p[3]这个是一个指针数组,它所代表的意思是数组中的每一个元素都是一个指针变量,而(*p)[3],p是一个指针变量,表示指向一个含有3个整型元素的一...
  • qiumingjian
  • qiumingjian
  • 2015年05月06日 17:24
  • 3276

二维数组参数传递 指针降级

先给出问题: 像下面这样的数组,在函数中如何传参?也就是说如何保证虚参与实参类型一致。 char str_arr[3][10] = {"yes","no","uncertain"}; cha...
  • callWuSheng
  • callWuSheng
  • 2013年11月20日 23:40
  • 1340

二维数组和二级指针作为参数传给参数的方式

一.如果要将二维数组传给一个函数,有几种传参方式?    1).直接将二维数组传给函数。    eg:        void test(int arr[3][4]);    2).以数组指针的方式传...
  • litter_driver777
  • litter_driver777
  • 2016年06月11日 14:05
  • 1178

11、二维数组、数组参数和指针参数

1. 二维数组   内存不是表状的,而是线状的,二维数组也是线性存储的,如char a[3][4]   二维数组、数组参数和指针参数" name="image_operate_2871312729...
  • mianyy
  • mianyy
  • 2011年08月23日 14:16
  • 142

C++学习笔记(三)--函数参数,数组函数,指针和const,二维数组函数,递归,函数指针

C++ primer plus学习笔记之三,分为一下几个部分: 函数参数:介绍了函数的生命规则以及定义 数组函数:数组作为变量时的使用方法 指针和const:灵活运用指针和const 函数和二维数组:...
  • zmdsjtu
  • zmdsjtu
  • 2016年09月02日 11:29
  • 575

C++数组(二维数组)与指针 以及 函数传递/返回指针和数组参数

概论 指针基础 指针进阶 一维数组的定义与初始化 指针和数组 本文参考资料 C++ Primer, 5e; Coursera北大数据结构与算法课程。 1. 概论 指针在C\C...
  • u014303046
  • u014303046
  • 2017年07月07日 15:48
  • 340

实验报告(指针将二维数组的行与列调换,验证回文数)

  • 2017年11月09日 21:24
  • 91KB
  • 下载

超声波代码和指针作为函数参数

  • 2013年06月11日 08:48
  • 2KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于二维指针参数
举报原因:
原因补充:

(最多只允许输入30个字)