当前位置:首页 » 网页前端 » web函数以字符串为参数
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

web函数以字符串为参数

发布时间: 2022-09-08 09:44:10

‘壹’ 请教,如何把字符串常量当作函数参数传入,谢

函数的形参进入函数时,进入的只是形参的拷贝值,并不是本身。函数是在栈里开辟内存,栈是系统自己的维护的所以不需要程序员自己回收当函数结束时,这片内存被释放。

‘贰’ 存放字符串数组名作为函数参数,是否要另外增加一个整数作为函数参数,以表明字符串有效字符个数,为什么

下面是C/C++语言中的数组使用。
数组名作为函数参数的时候会“弱化”为指针,即使用的时候实际传递是的指针类型的参数。
我们知道指针类型代表着地址,它并没有指明数组元素的个数,因此编写这类函数时通常加上一个整数类型的参数,以指明数组中元素。

涉及到具体的应用,如字符串数组,也可以不用这样的整数类型参数,这样的数组可以用strlen()函数得到字符串长度(有效字符个数)。
然而对于一般的数组,是没有这样的函数可用的。

‘叁’ c语言:字符串做为函数参数传递

1、值传递

void swap(int x,int y)

{ int temp = x;

x = y;

y = temp;

}void main()

{

int a = 10, b = 20;

swap(a, b);

}

执行后,并不会交换。

2、引用传递

void swap(int &x,int &y)

{ int temp = x;

x = y;

y = temp;

}void main()

{

int a = 10, b = 20;

swap(a, b);

printf("a=%d b=%d ", a, b);

}

执行后,发生交换。

3、指针传递

void swap(int *x,int *y)

{ int temp = *x; *x = *y; *y = temp;

}void main()

{

int a = 10, b = 20;

swap(&a, &b);

printf("a=%d b=%d ", a, b);

}

执行后,发生交换。

参数传递只有上面三种,但是如果加上数组,就会产生几种新形式。

首先,明确数组型变量名本身只是该数组所占存储空间的首地址:

int a[3] = { 1, 2, 3 }; int *p = a; //等价于下行 //int *p = &a[0];

printf("%d", *p);

典型的数组做参数。

void fun(char s[]){ for (int i = 0; s[i] != ''; i++)

printf("%c", s[i]);

}void main()

{ char str[] = "Hello World!";

fun(str);

}

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

其实本质与下相同,只不过还是数组形式的(数组名代替指针)。

既然数组型变量名本身只是该数组所占存储空间的首地址,我们当然可以用指针做形参来接收数组实参。

void fun(char *p){ while (*p)

{

printf("%c", *p);

p++;

}

}void main()

{ char str[] = "Hello World!";

fun(str);

}

不过问题是如果这样,无法把握数组结束(除非知道数组长度)。而对于字符数组(上例),由于字符串末尾有结束标志''(ascii码正好是0),所以就很容易利用指针来判断字符串是否结束。

(3)web函数以字符串为参数扩展阅读:

调用带参数的函数:

在调用函数时,可以向其传递值,这些值被称为参数。

这些参数可以在函数中使用。

可以发送任意多的参数,由逗号 (,) 分隔:

myFunction(argument1,argument2)。

当声明函数时,请把参数作为变量来声明:

function myFunction(var1,var2){这里是要执行的代码}。

变量和参数必须以一致的顺序出现。第一个变量就是第一个被传递的参数的给定的值,以此类推。

按值传递参数:

按值传递参数时,是将实参变量的值复制一个到临时存储单元中,如果在调用过程中改变了形参的值,不会影响实参变量本身,即实参变量保持调用前的值不变。

按值传递参数时,需要在参数名前加"ByVal"关键字。

按地址传递参数:

按地址传递参数时,把实参变量的地址传送给被调用过程,形参和实参共用内存的同一地址。在被调用过程中,形参的值一旦改变,相应实参的值也跟着改变。

如果实参是一个常数或表达式,Visual Basic 6.0会按"传值"方式来处理,按地址传递不需要"ByVal"关键字。

按数组传递参数:

在VB6.0中,允许使用数组作为实参传递到子过程的形参中,数组传递必须采用地址传递的方式来传递参数。数组参数在传递时应注意以下两个方面:

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

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

参考资料来源:网络-参数传递

参考资料来源:网络-字符串



‘肆’ 字符串数组指针作为函数的参数,哪里出错了

大概看了一下。你的代码有这样的逻辑错误:str_count的值好像总是比输入的字符串个数大,所以
for(int i=0;i<str_count;++i){//
printf("%s",*(pS+i));
}
这里在i大于实际字符串个数时会产生运行时错误,不可能运行到pstr=hb_zifuchuan(pS);这里成功调用hb_zifuchuan。你可以这样验证:输入3个字符串,把主函数和自定义函数中的for循环控制从i<str_count改成i<3,应该能在自定义函数中输出三个字符串……本人看法是这两个控制地方不能用str_count控制而应该用实际输入的字符串个数控制。

‘伍’ 如何让字符串转换成参数串

多个字符串转成一个字符串,可以看出字符串拼接,使用字符串拼接strcat()函数来完成。
工具:DEV C++
char strcat (char *dest, const char *src );
strcat()会将参数src字符串拷贝到参数dest所指的字符串尾。
参考代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

#include<stdio.h>
#include<string.h>
int main()
{
//定义3个字符串
char a[60]="中国";
char b[20]="欢迎";
char c[20]= "您!" ;

strcat(a,b);//把b字符串拼接到a的后面,a字符串变成“中国欢迎”
strcat(a,c); //把c字符串拼接到a的后面,a字符串变成“中国欢迎您!”

printf("%s\n",a);//输出拼接后的a

return 0;
}
/*
运行结果:
中国欢迎您!
*/

注意:
1.使用strcat()函数需要引用“string.h”头文件。
2.strcat(char *dest, const char *src)第一个参数dest要有足够的空间来容纳要拷贝的字符串。

‘陆’ javascript函数的参数为复杂的字符串

第一个问题:为什么要写成字符串连接的形式。
如果elementID + "'," + final_x + "," + final_y + "," + interval这4个参数不是全局变量,你这样写setTimeout("moveElement(elementID,final_x,final_y,interval)",interval);那么会 报错,因为找不到这样的全局变量。而上面那样拼接的话是找之前的方法内的变量就可以了。
第二个问题:‘elementID’ 为什不加么要加单引号,其实就是指定他是个字符串而已。
如果elementID真是个字符串,不是数字,那么你直接写不加引号的话会报错,这个是javascript的语法。如果是数字则没什么影响。
单引号和双引号都是javascript指定字符串的符号。

‘柒’ 字符串作为参数传入函数的错误

一、CBook类没有默认构造函数,应把有参构造函数删除或者再写一个无参构造函数。
二、类数据成员应改为字符串:char m_cName[100];
三、SetName函数中参数改为:char *name。语句改为:
strcpy(m_cName,name);

‘捌’ c语言中 怎样把字符串作为函数变量

你是说函数的参数吧?
定义参数的类型为 char *p; 或者 char p[];
即字符型指针或字符型数组

‘玖’ 编写函数求一个字符串的串长,字符串作为参数传入,函数的返回值为串长

#include <iostream> using namespace std; int string_length(char * pointer) //函数,求字符串的长度 { int length = 0; while(*pointer != '\0')//如果没到字符串末 { length ++; pointer ++; } return length; } int main() { char a[256]; cin >> a; int len = string_length(a); cout << "length = " << len << endl; return 0; }

‘拾’ 写一个递归函数,它以字符串为参数并且返回这个字符串的倒序。该函数的原型是 char *Reverse(char *str)

这并没有使用指针

无效的主要()
{
无效strReverse(的char [],int)的;
字符STR [] = “编辑此字符串来扭转”;
诠释莱恩??= 0;
(STR [LEN] ='\ 0')
{LEN + +;}
strReverse(STR,LEN);

的getch();
}

无效strReverse(CHAR STR [],INT)
{ />(STR [0] ='\ 0'&& N!= 0)
{
printf的(“%c”的,(STR [N-1]));
strReverse(STR,N-1);
}

}

基本关闭,但第一看看如何定义的字符数组对象
第一次分析时,系统将字符ABCD加\ 0,然后分配给字符数组
[1]字符海峡[] =“ABCD”,“ABCD”五元素,最后是\ 0;
[2]一个字符STR [] = {'A??','B','C','D'};有四个元素,并最终D
> 2。增加一个空字符判断递归

“stdio.h中”
无效的主要()
{
是无效strReverse(为const char * PSTR);
字符*海峡=“编辑字符串扭转”;
strReverse(STR);
的getch();
}

无效strReverse(常量的char * PSTR)
{字符* pstr2 = PSTR
(* pstr2!='\ 0')
{静态int n = 1时,
如果(N = 1)
{INT I = strlen的(PSTR)-1,K;
pstr2 =(char *)的的malloc(strlen的(PSTR)+1);
(k = 0;我> = 0; I - ,K + +)/ *循环以相反的顺序* /
{*(pstr2 + K)= *(PSTR + I);}
*(pstr2 + K)= '\ 0'; / *添加的最后一个字符\ 0 * /
N + +;
}
输出(“%c”的,* pstr2);
/> strReverse(pstr2 +1);}
}

[2]没有递归
的#include“stdio.h中”
无效的主要() /> {:无效strReverse(字符* PSTR);
字符*海峡=“编辑字符串扭转”;
strReverse(STR);
的getch();
/>}

无效strReverse(CHAR * PSTR)
{(pstr! = 0)/ *判断输入的字符不能为空* ??/
{INT I = strlen的(PSTR)-1; / *计算字符串的长度,不包括\ 0 * /
整数K;
的char * pstr2;的
pstr2 =(char *)的的malloc(strlen的( PSTR)+1); / *申请一个空间的大小将超过1比原来的字符串\ 0 * /
为(k = 0; I> = 0; I - ,和k + +)/ *循环在相反的顺序* /
{*(pstr2 + K)= *(PSTR + I);}
*(pstr2 + K)='\ 0'; / *添加的最后一个字符\ 0 * /
printf的(“%”,pstr2);
}
其他输出(“错误\ n”);

}