c语言字符串类型函数参数 c语言 字符串参数

c语言字符串指针作函数参数 。fun函数里面指针s=a传递的是函数地址,s在函数入口承接p指针值 , 之后接a,不改变p指针地址下的值!
c语言 怎么样才能将字符串作为函数参数?函数的原型、调用、首部行该怎么写?举个简单例子int myfuction (char *id){
printf("%s\n",id);
return strlen(id);
}
main(){
char id[80] = "abc";
printf("%d", myfuction(id));
}
c语言:字符串做为函数参数传递1、值传递
void swap(int x,int y)
【c语言字符串类型函数参数 c语言 字符串参数】{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语言中双引号引起来的字符串可以作为函数参数吗可以的,就像以下代码:
void show(char *str)
{
printf("%s\n", str);
}
你在调用的时候,一般是传一个变量进去 , 同样也可以传一个字符串常量进去,
例如show("Hello World");
为什么可以呢?首先要想,什么是变量,变量代表着值不确定,是动态的 。
而当一个变量有值的时候,除非它发生改变,否则它就是"确定"的 。
既然一个不确定的东西能作为参数传递过去,那么一个确定的字符串有何理由不能传递呢?
c语言字符串类型函数参数的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言 字符串参数、c语言字符串类型函数参数的信息别忘了在本站进行查找喔 。

    推荐阅读