首页 新闻 会员 周边 捐助

c语言&的使用

0
[待解决问题]

小白想问问c语言中的&要怎么用啊,这个&是个啥意思

吃吃就知道吃的主页 吃吃就知道吃 | 初学一级 | 园豆:130
提问于:2021-10-09 13:24
< >
分享
所有回答(5)
0

什么情况下?这是取地址用的吧。

顾晓北 | 园豆:10898 (专家六级) | 2021-10-09 13:47

您好,我就是想请问一下
float a,b, ;
scanf("%f",&a);
b=2.54*a ;
printf("%f",b) ;
return 0 ;
为什么这个代码中的a之前要加&而b之前不要加&,而且b之前如果加了&运行就错误了。

支持(0) 反对(0) 吃吃就知道吃 | 园豆:130 (初学一级) | 2021-10-09 19:01
0
&(*p) == p;
jakio6 | 园豆:1325 (小虾三级) | 2021-10-09 17:22
0

&在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;这种是与运算,就不多说了

梦里花开一季 | 园豆:208 (菜鸟二级) | 2021-10-09 19:46

float a,b, ;
scanf("%f",&a);
b=2.54*a ;
printf("%f",b) ;
return 0 ;
为什么这个代码中的a之前要加&而b之前不要加&,而且b之前如果加了&运行就错误了。

支持(0) 反对(0) 吃吃就知道吃 | 园豆:130 (初学一级) | 2021-10-09 22:23

@吃吃就知道吃: 这个就是C语言函数实现的问题。你可以看下这个https://www.runoob.com/cprogramming/c-function-scanf.html

支持(0) 反对(0) 梦里花开一季 | 园豆:208 (菜鸟二级) | 2021-10-09 22:33

@梦里花开一季: OKOK,谢谢哥

支持(0) 反对(0) 吃吃就知道吃 | 园豆:130 (初学一级) | 2021-10-09 22:38
0

取地址、逻辑与,这都是语法问题了。自己得翻翻书,多练练。这个应该是最基础的问题了。

寂静的羽夏 | 园豆:2124 (老鸟四级) | 2021-10-09 20:11

float a,b, ;
scanf("%f",&a);
b=2.54*a ;
printf("%f",b) ;
return 0 ;
为什么这个代码中的a之前要加&而b之前不要加&,而且b之前如果加了&运行就错误了。

支持(0) 反对(0) 吃吃就知道吃 | 园豆:130 (初学一级) | 2021-10-09 22:25

@吃吃就知道吃: 严格的说这个是函数调用的问题。你以后学指针就明白了。如果我想在函数修改参数的话,需要用指针的。而printf我只是输出一个参数而已,如果你加一个&,我就是取它的地址把他传入进行格式化输出,这就会可能会导致输出的结果错误。

支持(0) 反对(0) 寂静的羽夏 | 园豆:2124 (老鸟四级) | 2021-10-09 22:36

@寂静的羽夏: OKOK,谢谢哥,懂了。

支持(0) 反对(0) 吃吃就知道吃 | 园豆:130 (初学一级) | 2021-10-09 22:39

@吃吃就知道吃: 我再说的通俗一点,利用别人写好的函数,好比一个你想找别人办事,那个人说你只需给我某某东西或者信息就可以。而给的东西和信息就是那个人要求的,你给错了那个人就办不了事情甚至办错事情。这么说你可以理解了吧。

支持(0) 反对(0) 寂静的羽夏 | 园豆:2124 (老鸟四级) | 2021-10-09 22:41

@寂静的羽夏: 可以理解了可以理解了,很容易懂了,谢谢哥。

支持(0) 反对(0) 吃吃就知道吃 | 园豆:130 (初学一级) | 2021-10-09 22:43
0

两种功能。
一种是单目运算符,&a表示取a的地址,返回一个指针。
第二种,作双目运算符时解释作“按位与”

计算机知识杂谈 | 园豆:470 (菜鸟二级) | 2021-10-09 21:07

float a,b, ;
scanf("%f",&a);
b=2.54*a ;
printf("%f",b) ;
return 0 ;
为什么这个代码中的a之前要加&而b之前不要加&,而且b之前如果加了&运行就错误了。

支持(0) 反对(0) 吃吃就知道吃 | 园豆:130 (初学一级) | 2021-10-09 22:25

@吃吃就知道吃: scanf输入的时候因为是要修改a的,由于函数的传值机制必须使用指针传递。

支持(0) 反对(0) 计算机知识杂谈 | 园豆:470 (菜鸟二级) | 2021-10-10 07:25

而printf输出不需要修改b,直接传递参数的值就可以了。

支持(0) 反对(0) 计算机知识杂谈 | 园豆:470 (菜鸟二级) | 2021-10-10 07:26

具体的话,我的博客写过一篇文章《浅谈指针》,里面就解释了参数传值的问题。
https://www.cnblogs.com/jisuanjizhishizatan/p/15365823.html

支持(0) 反对(0) 计算机知识杂谈 | 园豆:470 (菜鸟二级) | 2021-10-10 07:27

文章都是我自己写的,里面swap函数就说明了这个问题。

支持(0) 反对(0) 计算机知识杂谈 | 园豆:470 (菜鸟二级) | 2021-10-10 07:30

@计算机知识杂谢谢您的帮助,文章写的很好,我都懂了。

支持(0) 反对(0) 吃吃就知道吃 | 园豆:130 (初学一级) | 2021-10-10 10:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册