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

9957

被折叠的 条评论
为什么被折叠?



