c语言列指针如何传入函数,c语言函数传递指针

C语言中 指针做函数参数传递二维数组

C语言中

成都创新互联企业建站,10多年网站建设经验,专注于网站建设技术,精于网页设计,有多年建站和网站代运营经验,设计师为客户打造网络企业风格,提供周到的建站售前咨询和贴心的售后服务。对于成都做网站、网站制作中不同领域进行深入了解和探索,创新互联在网站建设中充分了解客户行业的需求,以灵动的思维在网页中充分展现,通过对客户行业精准市场调研,为客户提供的解决方案。

指针做函数参数传递二维数组有两种基本方法:

1、传递“数组指针”

#include stdio.h

void output( int (*pa)[3], int n )//这个函数只能输出n行3列的二维数组

{

int i,j;

for( i=0;in;i++ ){

for( j=0;j3;j++ )

printf("%d ", pa[i][j] );

printf("\n");

}

}

void main()

{

int a[2][3]={

{1,2,3},

{4,5,6}

};

output(a,2);

}

2、传递“指针数组”

先将二维数组的行指针存储到一个指针数组中,再将指针数组传递到子函数中去。

#include stdio.h

void output( int *pa[], int row,int col ) //这个函数更通用,但调用前,要做好准备工作。

{

int i,j;

for( i=0;irow;i++ ){

for( j=0;jcol;j++ )

printf("%d ", pa[i][j] );

printf("\n");

}

}

void main()

{

int a[2][3]={

{1,2,3},

{4,5,6}

};

int i;

int *pa[2];

for( i=0;i2;i++ )

pa[i]=a[i];

output(pa, 2, 3);

}

关于c语言列指针

int二维数组在内存中没有所谓的列, 它是一段"连续"的内存空间,

正因为是连续的, 所以才要用p[i*n+j]来寻址

c语言传递函数指针

intcmp是和GetKeyFunc_t对应起来的。

而你现在错在了CmpFunc_t这个函数参数上了。

你把怎样的函数参数指针传给了BST_t *newBST?

你没交代清楚啊,你把错误指针传给newBST函数的第一个参数,编译器肯定报错了。你给了那么多代码,关键你把什么传给了BST_t *newBST的第一个参数?给一下你调用这个newBST函数的代码,而且要你传给该函数第一个参数的参数定义。

另外给个建议:定义函数时,记得对传进来的参数进行合法性检验。多加几行代码是很有必要的,能增强函数的健壮性。(微软也好,ISO也好,都对大部分函数设计时要求做必要的合法检验)


本文标题:c语言列指针如何传入函数,c语言函数传递指针
当前链接:http://scyanting.com/article/dsspgdd.html