转:C语言中如何将二维数组作为函数的参数传递下面例子,作为 指针传递和行指针传递 。
#include stdio.h
void fun(int *p1,int (*p2)[3], int row, int col){
int i,j;
for (i=0;i3;i++){
for (j=0;j4;j++) {
printf("%d ",p1[i*col+j]);
p2[j][i]=p1[i*col+j];
};
printf("\n");
};
}
int main(){
int a[3][4],b[4][3];
int i,j;
for (i=0;i3;i++)for (j=0;j4;j++) a[i][j]=(i+1)*10+j;
fun(a[0][0],b[0], 3,4);
printf("\n");
for (i=0;i4;i++){
for (j=0;j3;j++) printf("%d ",b[i][j]);
printf("\n");}
return 0;
}
或这样:
void fun(int p1[3][4],int p2[4][3]){
int i,j;
for (i=0;i3;i++){
for (j=0;j4;j++) {
printf("%d ",p1[i][j]);
p2[j][i]=p1[i][j];
};
printf("\n");
};
}
调用: fun(a,b); 即可 。
C语言,如何在子函数中写一个3*3二维数组,给主函数调用?。?/h2>在子函数申请二维数组,主函数使用,可以用动态申请 。
方法不止一种 , 我这里用指针的指针实现二维数组 。
二维数组除了行列,本身地址也是连续的,从第一行第一列的元素地址++ , 可以取出所有元素 。所以我这里先申请了完整的连续地址 。
#includestdio.h
#includemalloc.h
int ** sr(void)
{
int i,j;
int *memory=(int *)malloc(sizeof(int)*9);//申请完整的连续内存地址3*3
int **arr=(int **)malloc(sizeof(int*)*3);//申请二维数组行指针数组(也就是二维数组)
if(!memory || !arr){
printf("内存申请错误!\n");return NULL;}
for(i=0,j=0;i9;i+=3)//将连续地址按列数,取出每行首地址,赋值给二维数组元素
arr[j++]=memory[i];
for(i=0;i3;i++)
for(j=0;j3;j++)
scanf("%d",arr[i][j]);
return arr;
}
int main(void)
{
int i,j,**arr=sr();
if(!arr)
return 1;
printf("---主函数调用子函数定义的二维数组---\n");
for(i=0;i3;i++,printf("\n"))
for(j=0;j3;j++)
printf("%d ",arr[i][j]);
printf("\n---实现二维数组地址连续性---\n");
int *p=arr[0][0];
while(p=arr[2][2])
printf("%d ",*p++);
return 0;
}
C语言中,如何手动输入二维数组C语言中,如何手动输入二维数组?c语言的数组是非常重要的内容,特别是二维数组的内容,所以今天就由小编来为大家介绍c语言怎么创建一个二维数组 。
工具原料c语言电脑
方法/步骤分步阅读
1
/6
第一首先在电脑上打开c语言编程软件 。
然后创建项目 。
2
/6
第二然后导入stdio.h和stdlib包 。
再加入malloc包 。
3
/6
第三然后定义五个参数 。
再创建其中两个参数的空间 。
4
/6
第四然后用for语句进行循环 。
再用scanf语句进行接收输入到二维数组 。。
5
/6
第五然后用两个for语言循环 。
再输出二维数组的数值 。
6
/6
第六然后用printf语句进行数据输出分格 。
这样一个二维数组就创建成功c语言函数里放二维数组了 。
注意事项
个人经验,仅供参考 。
内容仅供参考并受版权保护
扩展内容c语言函数里放二维数组:
二维数组:
二维数组本质上是以数组作为数组元素的数组,即“数组的数组”,类型说明符 数组名[常量表达式][常量表达式] 。二维数组又称为矩阵,行列数相等的矩阵称为方阵 。对称矩阵a[i][j] = a[j][i],对角矩阵:n阶方阵主对角线外都是零元素 。
二维数组A[m][n],这是一个m行,n列的二维数组 。设a[p][q]为A的第一个元素,即二维数组的行下标从p到m+p,列下标从q到n+q,按“行优先顺序”存储时则元素a[i][j]的地址计算为:LOC(a[i][j]) = LOC(a[p][q]) + ((i ? p) * n + (j ? q)) * t,按“列优先顺序”存储时,地址计算为:LOC(a[i][j]) = LOC(a[p][q]) + ((j ? q) * m + (i ? p)) * t,存放该数组至少需要的单元数为(m-p+1) * (n-q+1) * t 个字节 。
c语言函数怎么传入一个二维数组这样传:
函数声明:Func(变量类型 *[二维数组的列长] arry);
char arry[][4] ;
Func(arry);
c语言中 strcpy函数是否可以用于二维数组?可以c语言函数里放二维数组的c语言函数里放二维数组 , 二维数组本身就是由多个一维数组组成c语言函数里放二维数组的c语言函数里放二维数组,对二维数组其中的一维数组分别使用strcpy即可c语言函数里放二维数组:
#include iostream
using namespace std;
void main()
{
char* str = "hello world!";
【c语言函数里放二维数组 c语言二维数组函数的使用方法】 char arr[100][100];
strcpy(arr[0], str);
coutarr[0]endl; //输出hello world!
}
如果不是逐个一维数组拷贝,那可以使用memcpy函数:
#include iostream
using namespace std;
void main()
{
char* str = "hello world!";
char arr[100][100];
memcpy(arr,str,13);
coutarr[0]endl; //输出hello world!
}
c语言中怎么用二维数组作为函数参数二维数组作为函数参数c语言函数里放二维数组 , 实参可以直接使用二维数组名,在被调用函数中对形参数组定义可以指定所有维数的大小,也可以省略第一维的大小说明,如c语言函数里放二维数组:
它们是合法且等价,也可以使用如下形式c语言函数里放二维数组:
但不能省略第二维的大小,如下面的定义是不合法的,编译时会出错:
因为从实参传递来的是数组的起始地址,如果在形参中不说明列数 , 编译器将无法定位元素的的位置 。
c语言函数里放二维数组的介绍就聊到这里吧 , 感谢你花时间阅读本站内容 , 更多关于c语言二维数组函数的使用方法、c语言函数里放二维数组的信息别忘了在本站进行查找喔 。
推荐阅读
- 索尼电视背光怎么换,索尼电视背光怎么换灯泡
- 虚拟机的主机网络,虚拟机 网络
- 神游下载,神游下载mp3等什么君
- 四平市场营销工资待遇如何,四平促销招聘网四平导购员招聘信息
- python网页版抖音爬虫,github 抖音爬虫
- 区块链概念股票,区块链概念股票第一创业
- idea2018可以开发flutter吗,idea配置flutter
- 来疯直播间手机版下载,来疯直播间62484
- js改php数据 php 数据怎么在js