#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[]必须要第三个参数
#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[]必须要第三个参数