字符串变为函数名C语言 c语言怎么把字符型变成数值

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

1、值传递

我们提供的服务有:成都网站设计、成都网站制作、微信公众号开发、网站优化、网站认证、马村ssl等。为千余家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的马村网站制作公司

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\nb=%d\n", 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\nb=%d\n", 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] != '\0'; 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);

}

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

扩展资料:

调用带参数的函数:

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

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

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

myFunction(argument1,argument2)。

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

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

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

按值传递参数:

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

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

按地址传递参数:

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

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

按数组传递参数:

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

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

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

参考资料来源:百度百科-参数传递

参考资料来源:百度百科-字符串

c语言如何把某个函数名转换为字符串

根据编译环境,有如下方式:

1

部分编译器中,支持__FUNCTION__或__func__宏。该宏为编译器定义,值为被调用函数的函数名转换成的字符串。如在func()中调用__FUNCTION__,则该宏的值为"func"。

2

如果编译器不支持上述宏名,那么需要手动添加宏。可以有如下两种方式:

a.

直接定义对应字符串,如

#define

FUNC_NAME

"func"

字符串中的直接写明。

b.

统一函数转换。利用宏定义的#操作,可以实现标识符向字符串的转换。

#define

FUNC_NAME(x)

#x

这时调用FUNC_NAME(func)就等效于"func"。

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

你在函数头定义就行,例如:

/*

void print(char a[],int n)

{

int i ;

for( int i =0; i n;i++)

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

printf("\n");

}

int main()

{

char a[] = "abacad";

print(a);

return 0;

}

*/

那么输出结果为

abacad

c语言 怎么样才能将字符串作为函数参数?函数的原型、调用、首部行该怎么写?举个简单例子

int myfuction (char *id){

printf("%s\n",id);

return strlen(id);

}

main(){

char id[80] = "abc";

printf("%d", myfuction(id));

}

c语言怎么将字符串转换成对应函数

c语言是没法把字符串转换成对应函数的,c语言是结构化语言,程序怎么执行在编译时已经确定,没法像c#之类的托管代码高级语言能够动态绑定或者叫后期绑定。因为托管代码有运行时去选择执行,而c语言编译后的可执行文件为操作系统直接调用了,所以没法动态绑定。

C语言中,如何将输入的字符串作为调用的函数名?

可以调用

例如

char str[100]={0};

gets(str);

if (strcmp(str,"mat x")==0)

{

mat(x);

}

大体上就是这样

具体的 函数的参数什么的 需要你自己从上面的字符串里解析


名称栏目:字符串变为函数名C语言 c语言怎么把字符型变成数值
分享URL:http://scjbc.cn/article/hhejph.html

其他资讯