c语言在函数中的二维数组 c语言在函数中的二维数组怎么表示

C语言如何在子函数中对主函数中的二维数组值进行修改? 二维数组已经在主函数中用动态数组分配了空间 。用指针做函数参数可以实现c语言在函数中的二维数组!
C语言中 指针做函数参数传递二维数组#include stdio.h
void fun(int (*p1)[3],int (*p2)[3]);
int main()
{
int p1[3][3]={{7,8,9},{4,5,6},{1,2,3}} ;
int p2[3][3] = {0};
int i = 0, j = 0;
fun(p1,p2);
for(i = 0;i3;i){
for(j = 0;j3;j){
printf("%d ",*(*(p2 i) j));
}
printf("\n");
}
return 0;
}
void fun(int (*p1)[3],int (*p2)[3])
{
int i = 0,j = 0;
for(i = 0;i3;i){
for(j = 0;j3;j){
*(p2[j] i) = *(p1[i] j);
}
}
}
扩展资料:
函数指针的声明方法为:
返回值类型 ( * 指针变量名) ([形参列表]);
其中,“返回值类型”说明函数的返回类型,“(指针变量名 )”中的括号不能?。ê鸥谋淞嗽怂惴挠畔燃?。若省略整体则成为一个函数说明,说明了一个返回的数据类型是指针的函数,后面的“形参列表”表示指针变量指向的函数所带的参数列表 。例如:
int func(int x); /* 声明一个函数 */
int (*f) (int x); /* 声明一个函数指针 */
f=func; /* 将func函数的首地址赋给指针f */
或者使用下面的方法将函数地址赋给函数指针:
f = func;
赋值时函数func不带括号,也不带参数 , 由于func代表函数的首地址,因此经过赋值以后,指针f就指向函数func(x)的代码的首地址 。
参考资料:
百度百科-函数指针
C语言函数调用二维数组,指针问题正如
楼下
【c语言在函数中的二维数组 c语言在函数中的二维数组怎么表示】所言
int
**p
,定义c语言在函数中的二维数组的p是一个指向int*型的
指针
int
(*p)[10]是一个指向
数组
的指针
数组长度为10
假如定义成
deal(int
**p),传
参数
时要加强制类型转换:
deal((int**)a);
并且使用p时不能用
下标
,p[2][3]是错误的,因为不知道p指向的int*型的长度,无法编译成*(p 2*10 3)
必须自己写成*(p 2*10 3)来调用
假如定义成
deal(int
(*p)[10])就不一样c语言在函数中的二维数组了,
编译器
就能知道p是一个指向长度为10的数组的指针
那么p[2][3]就能编译成*(p 2*10 3)c语言在函数中的二维数组了
总之,C语言是很灵活的,不同的定义
方式
配上不同的
用法
,都是能得到正确的结果的
不知道这么说楼主明白了没?
同样的还有
多维数组
对多维指针的问题,楼主可以自己类推一下
c语言在函数中的二维数组的介绍就聊到这里吧 , 感谢你花时间阅读本站内容,更多关于c语言在函数中的二维数组怎么表示、c语言在函数中的二维数组的信息别忘了在本站进行查找喔 。

    推荐阅读