`
anson_xu
  • 浏览: 503446 次
  • 性别: Icon_minigender_1
  • 来自: 惠州
社区版块
存档分类

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[]必须要第三个参数
分享到:
评论

相关推荐

    C/C++语言二维数组的传参方法总结

    C/C++语言将二维数组作为参数传递容易使人迷惑且易出错,本文将常用的几种方法列出,以方便用时查阅。三种方法总结如下(GCC验证成功):  方法一:形参为二维数组并给定第二维长度  此方法是简单直观的方法,...

    gsoap 2.8 (SOAP/XML 关于C/C++ 语言的自动化实现工具内附 CSharp webservice例子,及GSOAP client和server例子)

    gSOAP编译工具提供了一个SOAP/XML 关于C/C++ 语言的实现,从而让C/C++语言开发web服务或客户端程序的工作变得轻松了很多。绝大多数的C++web服务工具包提供一组API函数类库来处理特定的SOAP数据结构,这样就使得用户...

    使用Python向C语言的链接库传递数组、结构体、指针类型的数据

    想必很多时候,C语言会使用数组作为参数,在之前我们使用过ctypes的一些数据类型作为C语言参数类型,包括byte、short、int、double之类的,但是在使用数组类型的时候,我们也是有着类似的做法,下面我们

    计算机语言中c/c++的基础入门学习代码记录(适应于计算机二级)

    05数组名作为函数参数;06函数返回值为指针类型;07数组和指针;08指针数组;09多级指针) 9.结构体(01typedef语句;02结构体定义和使用;03结构体数组;04结构体数组排序;05结构体赋值;06结构体嵌套;07共用体)...

    函数参数的传递和值返回

    C/C++语言常混淆的问题,函数参数的传递和值返回,参照。

    高级C语言 C 语言编程要点

    14. C语言函数二维数组传递方法 64 15. C语言复杂表达式的执行步骤 66 16. C语言字符串函数大全 68 17. C语言宏定义技巧 89 18. C语言实现动态数组 100 19. C语言笔试-运算符和表达式 104 20. C语言编程准则之稳定篇...

    经典C/C++面试题目大汇总(全附答案).doc

    因此,当参数传递的数据较大时,用引用比用一般变量传递参数的效率和所占空间都好。 (3)使用指针作为函数的参数虽然也能达到与使用引用的效果,但是,在被调函数中同样要给形参分配存储单元,且需要重复使用"*...

    免费下载:C语言难点分析整理.doc

    14. C语言函数二维数组传递方法 64 15. C语言复杂表达式的执行步骤 66 16. C语言字符串函数大全 68 17. C语言宏定义技巧 89 18. C语言实现动态数组 100 19. C语言笔试-运算符和表达式 104 20. C语言编程准则之稳定篇...

    C语言难点分析整理

    1. C 语言中的指针和内存泄漏 5 2. C语言难点分析整理 10 3. C语言难点 18 ...14. C语言函数二维数组传递方法 64 15. C语言复杂表达式的执行步骤 66 16. C语言字符串函数大全 68 17. C语言宏定义技巧 89

    c语言难点分析整理,C语言

    14. C语言函数二维数组传递方法 64 15. C语言复杂表达式的执行步骤 66 16. C语言字符串函数大全 68 17. C语言宏定义技巧 89 18. C语言实现动态数组 100 19. C语言笔试-运算符和表达式 104 20. C语言编程准则之稳定篇...

    史上最强的C语言资料

    14. C语言函数二维数组传递方法 64 15. C语言复杂表达式的执行步骤 66 16. C语言字符串函数大全 68 17. C语言宏定义技巧 89 18. C语言实现动态数组 100 19. C语言笔试-运算符和表达式 104 20. C语言编程准则之稳定篇...

    高级C语言详解

    14. C语言函数二维数组传递方法 64 15. C语言复杂表达式的执行步骤 66 16. C语言字符串函数大全 68 17. C语言宏定义技巧 89 18. C语言实现动态数组 100 19. C语言笔试-运算符和表达式 104 20. C语言编程准则之稳定篇...

    C语言难点分析整理.doc

    14. C语言函数二维数组传递方法 64 15. C语言复杂表达式的执行步骤 66 16. C语言字符串函数大全 68 17. C语言宏定义技巧 89 18. C语言实现动态数组 100 19. C语言笔试-运算符和表达式 104 20. C语言编程准则之...

    高级进阶c语言教程..doc

    14. C语言函数二维数组传递方法 64 15. C语言复杂表达式的执行步骤 66 16. C语言字符串函数大全 68 17. C语言宏定义技巧 89 18. C语言实现动态数组 100 19. C语言笔试-运算符和表达式 104 20. C语言编程准则之稳定篇...

    Java语言程序设计的课程设计项目——利用Java实现地球系动画完整实现实例(第3部分).pdf

    将 this 作为最后一个参数传递给 drawImage()便可将 Applet 对象传递过去;或者直接采用 null 对象 作为最后一个参数。 2、EarthPlanetApplet 程序代码如下 (1)回顾 Java 中的数组 数组也是一个对象,并且数组也...

    JNI完全技术手册 带完整书签

    Chap7:Jni中C++和Java的参数传递... 33 Chap8:如何将java传递过来的jbyteArray转换成C/C++中的BYTE数组... 47 Chap5:使用JNI技术实现java程序调用第三方dll(c/c++)文件的功能... 47 Chap9:如何编写jni方法(转载...

    C语言程序设计+研究生复试+求职+面试题

    函数调用参数传递方法有哪些; static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别; 预编译命令作用; 论述含参数的宏与函数的优缺点; 文件操作...

    aybook.cn_c++jiaocheng0105.rar

    7.1 函数的作用域准则 7.2 传递指针和数组 7.3 argc和argv:函数main()的参数 7.4 return语句 7.5 函数原型 7.6 头文件:进一步的学习 7.7 递归 第8章 函数,第二部分:引用,重载和默认参数 8.1 两种参数传递的方法 ...

    现代C++程序设计

    1.1.2 C/C++是一门编译语言 1.1.3 为什么许多程序员都选择C++ 1.2 什么是面向对象 1.2.1 C++程序并不一定是面向对象的 1.2.2 一个简单的面向对象程序示例 1.2.3 面向对象的软件更有优势 1.3 结构化设计与面向对象...

Global site tag (gtag.js) - Google Analytics