C语言二维数组问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言二维数组问题相关的知识,希望对你有一定的参考价值。
比如 int matrix[4][4]。
这个matrix 是二级指针吗?
我试过,在我的机器上,int *或者int **都不行。
那怎么调用二级数组啊?
我想知道定义一个函数中如何调用:
int main(int **)形参想读入一个二维数组,怎么办?
这么说吧,数组名本身就是指针,指向数组的第一个元素
至于你所说的调用调用二级(二维吧)数组,难道不是如普通变量般直接调用吗?
根据问题补充说,这是不允许的,main()函数的形参是固定的不能传递指针。而一般的自定义函数只能用传递首地址的形式来传递二维数组,例子如下:
定义:int a[X][Y];
int func(int *p,int x,int y) //x,y即为调用x行y列的元素
printf("%d\n",p+x*X+y); //这里是通过计算指针位置实现
return 0;
调用: func(a,3,3);
这种通过计算地址方法调用相当麻烦。。可以考虑将数组定义在结构中,再将结构进行形参传递,当这样会降低效率...例子如下
#include<stdio.h>
typedef struct
int a[5][5];TE;
TE test;
int func(TE a,int x,int y)
printf("%d\n",a.a[x][y]);
return 0;
int main()
test.a[3][3]=5;
func(test,3,3);
getch();
return 0; 参考技术A matrix[i]就是指向二级数组的第i+1个数组的首地址的常量指针 参考技术B martrix本身就是一个指针,调用的话直接当已经声明的指针用,不需要额外声明。
以上是关于C语言二维数组问题的主要内容,如果未能解决你的问题,请参考以下文章