c语言中函数参数为指针的多次传递

本文深入探讨了未初始化变量与指针作为函数参数的区别,解释了为什么未初始化的变量不能作为实参,而未初始化的指针却可以。同时,文章详细分析了使用指针作为函数参数的优势,包括灵活性、多次传递以及返回值的特性。

1、为什么没有初始化的变量不能作为实参?

值传递,没有值怎么传???

 2、为什么没有初始化的指针可以作为实参?

传递的是指针,该指针变量是有值的,其值是所指向的内存单元的地址,所以可以传。

可以进行多次传递,因为传递的是指针,而不是普通变量值;(ps:此时也可以理解为值传递,只不过值是指针的地址。)

3、函数参数为指针的优势:

指针所指向的值,可以是初始化过的,也可以是未初始化的,使用更加灵活。

并且函数返回值也可以是指针,此时函数中修改号指针所指向变量,可以通过返回值返回。(形参为结构体指针,返回的为指向结构体成员的指针)

4、指针多次传递示例

void func_1(char*c1)
{
    strcpy(c1,"abc");
    //这个地方不能用c1 = "abc";字符串的复制要用strcpy.
   
}
void func_2(char*c2)
{
    func_1(c2);
   
}
int main()
{
    char ch[4]={0};
    func_2(ch);//是传的指针,而不是值。
    printf("%s\n",ch);
}

5、总结:

函数传递的参数是指针,对于数组名来说是值传递,函数内的地址操作,p++,p--,不会影响数组名;

对于数组元素来说,是指针传递,*p,或者strcpy会影响到数组的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值