社区
C语言
帖子详情
请问如何把一个二维数组作为函数参数传进一个函数?
hqt1979
2004-06-27 10:24:23
请问如何把一个二维数组作为函数参数传进一个函数?
例如:
void tt(char **str)
{
}
void main()
{
char str[20][20];
tt(str);
}
以上程序编译通不过,请问函数tt的参数应该是什么,才能把二维数组传进去??
谢谢回复!!
...全文
1783
16
打赏
收藏
请问如何把一个二维数组作为函数参数传进一个函数?
请问如何把一个二维数组作为函数参数传进一个函数? 例如: void tt(char **str) { } void main() { char str[20][20]; tt(str); } 以上程序编译通不过,请问函数tt的参数应该是什么,才能把二维数组传进去?? 谢谢回复!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
tuqvb
2004-06-28
打赏
举报
回复
如果是一个二维数组,例如: int a[3][4]
如果将a 作为参数传递给函数的话,函数的参数应该定义为 :int (*p)[4],此时便可顺利访问。
错了,不只编译通不过,而且仔细考虑一下内存分布
即时能通过编译,想一想到时候p[0..4]的内容各是什么呢?
tuqvb
2004-06-28
打赏
举报
回复
void tt(int rs,int cs,char ar[rs][cs]) //(char *str)
{
}
编译器会羞辱你的,因为要让它处理数组,你必须将数组的各维(低n-1维)界定设为常数
即让它在编译期间就能知道数组的大小
应该是void tt(int rs, int cs, char ar[][20])
这样才能编译通过,但是恐怕使用起来非常不爽,因为有一维的大小被定死了
fanglinlin7841
2004-06-28
打赏
举报
回复
如果是一个二维数组,例如: int a[3][4]
如果将a 作为参数传递给函数的话,函数的参数应该定义为 :int (*p)[4],此时便可顺利访问。代码如下:
#include <stdio.h>
void f( int (*p)[4]);
void main()
{
int a[3][4];
for( int i=0;i<3;i++)
for(int j=0;j<4;j++)
a[i][j]=i;
f(a);
}
void f( int (*p)[4])
{
printf("%d",*(*(p+1)+2); //此时访问的是a[1][2]
}
Jarrylogin
2004-06-28
打赏
举报
回复
void tt(char a[][20])或者 void tt(char (*a)[20])数组指针的形式
yux007
2004-06-28
打赏
举报
回复
关注
peter9606
2004-06-28
打赏
举报
回复
我帮你 ding 偶也是看了C++ Primer上面这样说的 至于为什么恐怕要那些对编译器很熟悉的大牛们来指点了
hqt1979
2004-06-28
打赏
举报
回复
首先非常感谢各位朋友的热心讨论!
的确,如以上朋友所说:若函数的参数是二维数组,函数原型应该写成这种形式:
void tt(char a[][20])或者 void tt(char (*a)[20])或者降为一维数组来处理。
但现在我有点搞不明白,为什么不能指明第一维的维数呢?编译器为什么要这样做?
那位朋友能解释一下原因,让大家理解的更透彻一些。
groock
2004-06-28
打赏
举报
回复
我在main里不知道为什么可以用
int test(char *fun[])
int main(int argc, char *argv[])
调用函数:test(argv)
这样子可以的
peter9606
2004-06-28
打赏
举报
回复
总结一下:
如果参数是多维数组,那么参数必须指明第一维意外得所有未得长度:比如你的
void tt(char a[][20])或者 void tt(char (*a)[20])
另外这样也是可以的
char *a[10] ;
tt(a);
tt(&a[0]);
liu_feng_fly
2004-06-28
打赏
举报
回复
使用STL啊,用vector
jaredcsdn
2004-06-28
打赏
举报
回复
要我说就不要挖空心思了
直接 void tt(char *str, unsigned n) 算了
用 *(str+i*n+j) 取值死不了人的.
说白了, C在根本上就不支持二维数组, 楼主何必强求.
bribin
2004-06-28
打赏
举报
回复
只要改成void tt(char a[][20])就可以了
somjet
2004-06-27
打赏
举报
回复
如果你是想得到数组中一个元素得位置,你可以用上面的方法,要是你想得到二维数组中的某个值你可以用变长数组来解决;
void tt(int rs,int cs,char ar[rs][cs]) //(char *str)
{
}
void main()
{ int r,c;
scanf("%d %",r,c);
char str[20][20];
tt(r,c,str);
}
可能我领悟错了,但这是我给的建议,谢谢
613613
2004-06-27
打赏
举报
回复
void tt(char **str) //(char *str)
{
}
void main()
{
char str[20][20];
tt(str); //tt(str[0])
}
偶菜,只会这样,,,5
613613
2004-06-27
打赏
举报
回复
上面错了,,不好意思,,偶菜
613613
2004-06-27
打赏
举报
回复
tt(str):这里面的str是个行指针(该行含20个元素),而char **str是个指向字符的指针。
所以不匹配。函数tt的参数应该是指向字符元素的,如:str[0].
青少年C++编程NOIP/CSP竞赛通关语法-
二维数组
1、本课程为零基础C++语法专题课,是青少儿参加信息学奥赛NOIP/CSP需要学习的语法专题课; 2、本课程每节课均配有练习题以及真题,以锻炼孩子的解题能力;... 6、本课程介绍的是
二维数组
。也是历来竞赛重要考点。
C语言
二维数组
作为
函数
参数
传递
二维数组
作为
函数
的参数,实参可以直接使用
二维数组
名,在被调用
函数
中可以定义形参所有维数的大小,也可以省略以为大小的说明。例如: void find(char a[3][10]); void find (char a[ ][10]); 也可以使用数组...
在C++中如何将
二维数组
作为
函数
参数
一直以来弄不清C++中数组怎么作为参数传入
函数
中,尤其是最近学了Python之后,Python这种几乎可以把一切作为参数传入
函数
的方式更是让我在C++中混淆,下面来总结一下
二维数组
作为
函数
参数
该如何表示。 1、
二维数组
的...
C语言
二维数组
作为
函数
参数
的4种方式
前言 多维数组中,
二维数组
是最常用的一种。...话不多说,下面将给出
一个
C程序,以展示
二维数组
作为
函数
参数
的4种方式。注:下面的代码已在VS Code(使用Mingw64)和VS 2015下编译运行过。 正文 下面程序的功
C++笔记
二维数组
作为
函数
的参数详解 三种传参的方法总结 注意要点总结
//
二维数组
作为
函数
的参数,一般只有三种写法 //void array_print(int array[2][2]) ////
函数
的参数声明必须指明数组的列数,数组的行数没有太大关系,因为
函数
调用时传递的是
一个
指针,它指向由行向量构成的一维...
C语言
69,383
社区成员
243,074
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章