[英]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.