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

c语言函数字符串参数

发布时间: 2022-01-21 12:54:26

c语言中双引号引起来的字符串可以作为函数参数吗

可以的,就像以下代码:

voidshow(char*str)
{
printf("%s ",str);
}
你在调用的时候,一般是传一个变量进去,同样也可以传一个字符串常量进去,
例如show("HelloWorld");
为什么可以呢?首先要想,什么是变量,变量代表着值不确定,是动态的。
而当一个变量有值的时候,除非它发生改变,否则它就是"确定"的。
既然一个不确定的东西能作为参数传递过去,那么一个确定的字符串有何理由不能传递呢?

㈡ C语言字符串指针作函数参数

实参数组p中的内容没有改变
因为fun函数仅仅是改变了参数s指针的指向,使其指向了局部变量数组a而已

㈢ C语言程序设计:设计一函数,函数的形参为一字符串,判断该字符串是否为字符

代码和运行情况如图:

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

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

㈤ c语言如何传递字符串

c语言函数中传递字符串,可以分为两种情况,一种是将字符串作为参数,一种是将字符串作为返回值 ,当使用字符串作为返回值时,切记不要传递局部字符数组。下面是一个示例代码:


#include<stdio.h>
#include<string.h>
#include<stdlib.h>
voidf(char*str){//字符串作参数
printf(str);
}
char*r(){//字符串作返回值
//使用动态分配内存,不要使用局部变量比如
//charbuf[80];因为局部变量在函数结束时,栈区变量已被回收
char*str=(char*)malloc(256*sizeof(char));
if(str==0){printf("can'tallocmem ");return0;}
elsememset(str,0x00,sizeof(char)*256);
returnstr;//
}
intmain()
{
char*pstr=r();
if(pstr!=0)strcpy(pstr,"helloworld ");
f(pstr);
free(pstr);
return0;
}

㈥ c语言中 如果给函数形参传递字符串

单个字符用单引号引起来,比如'\0'你都用了双引号,改过来就好了

㈦ c语言字符串指针作函数参数。

fun函数里面指针s=a传递的是函数地址,s在函数入口承接p指针值,之后接a,不改变p指针地址下的值!

㈧ 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),所以就很容易利用指针来判断字符串是否结束。

(8)c语言函数字符串参数扩展阅读:

调用带参数的函数:

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

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

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

myFunction(argument1,argument2)。

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

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

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

按值传递参数:

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

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

按地址传递参数:

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

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

按数组传递参数:

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

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

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

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

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



㈨ C语言 函数的形参怎么对字符串引用

按你的意思猜,得把printf("%c",B);改成printf("%c",*B);才对。

㈩ C语言函数只读字符串参数问题

c语言编译器默认是不让返回指针类型的,但是返回并没有错,有些情况下会正常执行,当然编译无论是否可以正常执行都会编译。这是因为指针变量在函数中,一旦函数结束,这个指针指向的地址就会作废,suoyi 没意义,故编译器默认返回时会提醒。一般使用加上static使其不销毁。