C/C++语言数组作为参数传递

#include <stdio.h>
#include <iostream.h>
#include <string.h>

#define LINE 2
#define ROW 4

int array(char *szStr[ROW], int len)
{
for (int i=0; i<len; i++){
puts(szStr[i]);
}

return 0;
}

int main(int argc, char* argv[])
{
char str[LINE][ROW] = {"001","023","052","002"};

array(, 4); //这里填写什么才会不报错?,如果我错了,请指出错在哪里.

return 0;
}


char **和char *[ ]和 char[ ][ ]的区别?

如果可以的话希望给点详细的介绍,或者给几个好一点的地址..小弟一定非常感谢..

你目前的代码中那个位置填写什么都不会没有问题的!
因为:
array函数中第一个参数你定义的不是数组指针而是指针数组,所以,你的str本质上是char(*)[4],而你array的第一个参数本质上是char**.

建议,修改arry为:int array(char szStr[][ROW], int len)

并且char str[LINE][ROW] = {"001","023","052","002"};
这种定义在LINE=2的情况下,一定会报错的吧!
至少要改成 char str[LINE][ROW] = {"001","023"};追问确实,这种做法很好,
char szStr[][ROW]是不是按值传递的啊?和charszStr[LINE][ROW]等价吗?
谢谢.


#include <stdio.h>
#include <iostream>
#include <string.h>
using namespace std;

#define LINE 4 //这里改成4,因为你有4个字符串
#define ROW 4

int array(char *szStr[ROW], int len)
{
for (int i=0; i<len; i++){
puts(szStr[i]);
}

return 0;
}

int main()
{
char str[LINE][ROW] = {"001","023","052","002"};
char* szstr[4]; //写一个指针,将数组中的元素赋值给它
int i;
for (i = 0; i != 4; ++i)
{
szstr[i] = str[i];
}

array(szstr, 4); //这里填写什么才会不报错?,如果我错了,请指出错在哪里.

return 0;
}

这种方法确实没有错,而且非常直观,
我想如果不通过第三个变量直接放到实参那里不知道还有没有其他的方法呢?
谢谢

要么修改函数为int array(char szStr[LINE][ROW], int len),要么把char str[LINE][ROW]定义为char* str[ROW]
因为str[][]是一个数组,是一个const指针,要转成*str[]必须要第三个参数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值