C++里string字符串数组,做函数的参数怎么写

C++里string字符串数组,做函数的参数怎么写,第1张

比如有

string a[10][10]

;

那么可以这样

void xxx(string a);

或者

void xxx(string a[][10]);

或者

void xxx(string a[10][10]);

使用的时候直接

xxx(a);

就行了

#include<stdioh>

#include<stringh>

#define M 100

#define N 25

int main()

{

char c1(char str[M]);

char s1[M];

puts("请输入一个字符串:");

gets(s1);

c1(s1);

return 0;

}

char c1(char str[])

{

char c[N]="\0",ch[N]="\0";

int i,j,k,m,n;

for(i=0,j=0;i<N,j<M;i++,j++)

{

c[i]=str[j];

if(str[j]==' ')

{

i=-1;

m=strlen(ch);

n=strlen(c);

if(n>m)//问题在这里 strlen求的是数组长度 你定义的都是N=25 m=n下面的都不执行了

for(k=0;k<n-1;k++)

ch[k]=c[k];

}

else if(str[j]=='\0')

{

i=-1;

m=strlen(ch);

n=strlen(c);

if(n>m)//这里也是

for(k=0;k<N;k++)

ch[k]=c[k];

}

}

puts(ch);

return 0;

}

二维字符数组做函数参数。char str[3][] = {"abcd", "def", "hij"};

定义:int function(char str);

不知道是不是你要问的。

C语言中,数组名作为函数参数,属于数组参数传递。在VB60中,允许使用数组作为实参传递到子过程的形参中,数组传递必须采用地址传递的方式来传递参数。

数组型变量名本身只是该数组所占存储空间的首地址,函数调用时,系统不会为形参分配数组存储空间,而是仅仅分配一个存放数组地址(第一个元素地址)的存储空间,此后,将实参数组的首地址传递给形参变量。

扩展资料:

数组参数在传递时应注意以下两个方面:

1、 在实参和形参列表中只写数组名,忽略维数的定义,但圆括号不能省,当数组作为参数传递时,系统将实参数组的起始地址传给过程,使形参数组也具有与实参数组相同的起始地址,若参数是多维数组,每维以逗号分隔。

2、被调过程可分别通过Lbound和Ubound函数确定实参数组的下界和上界。

-参数传递

区分二维字符数组的类型,有两种方式:

1 静态的二维数组。

也就是形式为char a[M][N]形式的数组,在传参数的时候,需要在形参中指明二维数组的宽度,也就是N值。

可以写成char a[M][N]的形式,也可以写成char a[][N]的形式。

另外,由于静态数组的单元是连续的,也可以转成一维数组传入,并在其它参数中指明二维数组的长和宽。不过在函数中访问时需要做对应的转换。

2 动态二维数组,即char p;在p上分配的二维数组,本质上为二维指针。 可以直接以char 类型参数传入。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/12175767.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存