新手有点小疑问

kmazi 2010-07-16 10:05:20
scanf("a=%d,n=%d",&a,&n);

请问各位大虾 那个"&"什么时候要 什么时候不要啊 ? 我看到有的地方不要!!!
...全文
78 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2010-07-16
  • 打赏
  • 举报
回复
VC调试时按Alt+8,TC或BC用TD调试,打开汇编窗口看每句C对应的汇编不就啥都明白了吗。
(Linux或Unix下应该也可以在用GDB调试时,看每句C对应的汇编。)
想要从本质上理解C指针,必须学习汇编以及C和汇编的对应关系。
从汇编的角度理解和学习C语言的指针,原本看似复杂的东西就会变得非常简单!

计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……
chaoliu1024 2010-07-16
  • 打赏
  • 举报
回复
scanf一般形式:scanf(格式控制,地址表列)
只要保证地址表列中是地址就可以了。。。
chaoliu1024 2010-07-16
  • 打赏
  • 举报
回复
如果变量名代表地址了,就不要&了
比如数组名代表首地址,就不需要
char str[4];
scanf("%s",str);就可以了
bluejays 2010-07-16
  • 打赏
  • 举报
回复
比如 char str[20]; scanf("%s", str);
这里str已经是个指针了,就不要用&了。
刚开始是会有点晕,用多了就好了。
Benny_ywb 2010-07-16
  • 打赏
  • 举报
回复
如果你不传引用或指针,a,b得不到输入值。
你所看到的没有&,大概是这种情况
char a[100];
scanf("%s", a);
  • 打赏
  • 举报
回复
&在这里只是对这个变量取地址,因为scanf操作参数需要保证是参数本体。

http://blog.csdn.net/hairetz/archive/2009/05/03/4145107.aspx

看完这个就知道需要了
kmazi 2010-07-16
  • 打赏
  • 举报
回复
不好意思 我是个新手 我还没学指针 我在书上有时也看到 scanf输入的时候不要&!!!
wu1373369 2010-07-16
  • 打赏
  • 举报
回复
&是取地址的意思,&a是一个指针类型了,看函数的参数类型
scanf输入的时候要,printf输出的时候不要
cunyan_0519 2010-07-16
  • 打赏
  • 举报
回复
看到各位的不痛角度讲解,从这里彻底弄清楚了一个问题。
眼睛猥琐男 2010-07-16
  • 打赏
  • 举报
回复
如果变量名代表地址了,就不要&了
比如数组名代表首地址,就不需要
char str[4];
scanf("%s",str);就可以了
dd911501406 2010-07-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 kmazi 的回复:]
不好意思 我是个新手 我还没学指针 我在书上有时也看到 scanf输入的时候不要&!!!
[/Quote]

你看到的不要的情况应该是类似这种char str[10];
scanf("%s",str);

因为数组的名字一定意义上来说,和指针是相同的,数组名就是数组的首地址
你没学过指针,指针就是指向一个变量的在计算机中存放的地址
char a;
这里的a是一个变量,&a就指的a在计算机中存放的地址
不知道这样说你明白不

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧