C传递char作为参考

时间:2015-10-31 05:52:48

标签: c++ c

当我使用此代码时,程序在插入第一个char后中止 当我删除它所使用的函数内的星号(*)但它变为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);
}

2 个答案:

答案 0 :(得分:3)

更改您的scanf它将起作用并且它是纯粹的

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

并且你不能像*first那样,因为在scanf中它需要变量的地址,所以在你的情况下插入第一个字符后它就会中止。

在功能中,您传递地址而不是参考。

答案 1 :(得分:3)

*(valueof)中没有scanf运算符的纯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)相同,而不是引用