繁体   English   中英

C传递char作为参考

[英]C pass char as reference

当我使用此代码时,当我删除其功能内的star(*)时,该程序在插入第一个字符后中止,但它变为C ++引用。 我要保持纯净(C)

void info(char *first, char *second, char *third)
{
    printf("insert three char: ");

    scanf(" %c %c %c", *first,*second,*third);
}
int main()
{
    char a=' ',b=' ',c=' ';

    info(&a,&b,&c);
}

更改您的scanf,它将正常工作,并且在纯c语言中

scanf(" %c %c %c", first, second, third);

并且您不能喜欢*first因为在scanf中它需要变量的地址,因此在您的情况下插入第一个字符后它将中止。

在功能上,您正在传递地址,而不是引用。

scanf没有*(valueof)运算符的情况下,其纯C语言:

为了解释您的概念,请尝试使用三个指针:

void info(char *first, char *second, char *third)
{
    printf("insert three char: ");

    scanf(" %c %c %c", first,second,third);
}
int main()
{
    char a=' ',b=' ',c=' ';
    char *p1=&a;
    char *p2=&b;
    char *p3=&c;
    info(p1,p2,p3);
    return 0;
}

这仅相当于传递地址 info(&a,&b,&c)而不是reference

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM