函数传递数组

来源:互联网 发布:孟克鞋搭配 知乎 编辑:程序博客网 时间:2024/06/05 00:21

首先这个问题比较低级,写在此对自己做个提醒,永远不要忘了基础的东西。

首先看一维的情况:

一般三种方式:

f(int []),f(int a[]),f(int *a):第一二中几乎相同都用·数组来传递,第三种用指针传递;不同在于指针可以根据变量来分配数组长度,而数组必须定义的时候就指定。

其次来看一下二维的情况:

一般也有三种方式:

f(int a[][]):对应的数组定义为int a[2][3];   

f(int *a[]):对应的数组定义为int* a[2]  for(int i=0;i<2;i++) a[i]=new int[3];

f(int **a):对应的数组定义应该为  int** a=new int* a[2];for(int i=0;i<2;i++)a[i]=new int[3];


当然你也可以把二维数组转化成一维~~!



补充一下:

引用的传递:

f(int &a):传递普通类型引用

f(int (&a)[10]):传递数组的引用


函数指针

void (*f)(int,int)   函数指针的声明

f=func;函数指针的赋值(在之前需要声明func函数例如:void func(int a,int b))

函数数组指针

void (*f[10])(int,int)

f[0]=func




指针和引用


本质上:

指针在符号表中:指针名+指针的地址(不是指针指向的变量地址)

引用在符号表中:引用名+变量地址


因此:int & const a=b;错

    int *const a=b  对





原创粉丝点击