小白想问问c语言中的&要怎么用啊,这个&是个啥意思
什么情况下?这是取地址用的吧。
您好,我就是想请问一下
float a,b, ;
scanf("%f",&a);
b=2.54*a ;
printf("%f",b) ;
return 0 ;
为什么这个代码中的a之前要加&而b之前不要加&,而且b之前如果加了&运行就错误了。
&(*p) == p;
&在C语言中这个符号还是挺有意思的:
实现一个函数
void function(int x,int* y)
{
int sum = x +(*y);
printf("%d",sum);
}
void main()
{
int a,b;
function(a,&b);
}
上面一个简单的例子,这个例子上&是取地址用的,具体怎样,得看函数是怎样实现的。
还有一种情况:a=b&c;这种是与运算,就不多说了
float a,b, ;
scanf("%f",&a);
b=2.54*a ;
printf("%f",b) ;
return 0 ;
为什么这个代码中的a之前要加&而b之前不要加&,而且b之前如果加了&运行就错误了。
@吃吃就知道吃: 这个就是C语言函数实现的问题。你可以看下这个https://www.runoob.com/cprogramming/c-function-scanf.html
@梦里花开一季: OKOK,谢谢哥
取地址、逻辑与,这都是语法问题了。自己得翻翻书,多练练。这个应该是最基础的问题了。
float a,b, ;
scanf("%f",&a);
b=2.54*a ;
printf("%f",b) ;
return 0 ;
为什么这个代码中的a之前要加&而b之前不要加&,而且b之前如果加了&运行就错误了。
@吃吃就知道吃: 严格的说这个是函数调用的问题。你以后学指针就明白了。如果我想在函数修改参数的话,需要用指针的。而printf
我只是输出一个参数而已,如果你加一个&,我就是取它的地址把他传入进行格式化输出,这就会可能会导致输出的结果错误。
@寂静的羽夏: OKOK,谢谢哥,懂了。
@吃吃就知道吃: 我再说的通俗一点,利用别人写好的函数,好比一个你想找别人办事,那个人说你只需给我某某东西或者信息就可以。而给的东西和信息就是那个人要求的,你给错了那个人就办不了事情甚至办错事情。这么说你可以理解了吧。
@寂静的羽夏: 可以理解了可以理解了,很容易懂了,谢谢哥。
两种功能。
一种是单目运算符,&a表示取a的地址,返回一个指针。
第二种,作双目运算符时解释作“按位与”
float a,b, ;
scanf("%f",&a);
b=2.54*a ;
printf("%f",b) ;
return 0 ;
为什么这个代码中的a之前要加&而b之前不要加&,而且b之前如果加了&运行就错误了。
@吃吃就知道吃: scanf输入的时候因为是要修改a的,由于函数的传值机制必须使用指针传递。
而printf输出不需要修改b,直接传递参数的值就可以了。
具体的话,我的博客写过一篇文章《浅谈指针》,里面就解释了参数传值的问题。
https://www.cnblogs.com/jisuanjizhishizatan/p/15365823.html
文章都是我自己写的,里面swap函数就说明了这个问题。
@计算机知识杂谢谢您的帮助,文章写的很好,我都懂了。