字符串二维数组函数形参

重庆-老白 2012-05-27 09:13:48
#include<stdio.h>
#define LIM 5
#define LISENSE 10
void stsrt(char * string[],int num);
int main(void)
{
char ch[LIM][LISENSE];
char * ptr[LIM];
int ct=0;

while(ct<LIM&&gets(ch[ct])&&ch[ct][0]!='\0')
{
ptr[ct]=ch[ct]; //这里用ptr=ch;居然显示错误?同为地址,为什么不能赋值?为什么要赋值给指针才能操作?
ct++;
}
stsrt(ptr,ct);//这里使用stsrt(ch,ct);为什么不可以?
for(ct=0;ct<LIM;ct++)
puts(ptr[ct]);
return 0;
}
//对一个字符串二维数组进行操作,必须赋予指针吗?比如该题,为什么不能传送ch?反正都是地址。
void stsrt(char * string[],int num)
{
*********
}//麻烦讲解一下。
...全文
122 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
W170532934 2012-05-27
  • 打赏
  • 举报
回复
传递指针比较好,不然要规定二维数组的长度
frank909 2012-05-27
  • 打赏
  • 举报
回复
数组名是指针常量,是不能被改变大小的指针。不能当左值。。。就好比。a=3,可以,但3 = a就错了。
羽飞 2012-05-27
  • 打赏
  • 举报
回复
ch跟char **还不是等同的,我只知道这么多
而形参中 char *[]跟char **是等同的,而且 实参的char *[]可以自动转换为char **, 但是实参的char [][]不能直接转换为 char **

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧