当我使用此代码时,程序在插入第一个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);
}
答案 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)
相同,而不是引用。