| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 280 人关注过本帖
标题:求助 输出函数的输出项是地址问题
只看楼主 加入收藏
c759541810
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-2-4
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
求助 输出函数的输出项是地址问题
有一道题是判断正误:
对于double类型的数组,不可以直接用数组名对数组进行整体输入或输出。  答案是正确。
问:
1. scanf  printf  函数的调用形式是
scanf(格式控制,输入项....)    printf(格式控制,输出项.....)   
其中  两函数的输入,输出项均可以是  
1.数组名        
2.地址       吗?               
什么情况下可以是二者(之一)???  与前面的格式控制有关系吗?   
请详细说明。   
为什么char str[15];   scanf("%s",str);这样是正确的;
而 下列程序
#include<stdio.h>
void main()
{   int a[7]={1,2,3,4,5,6,7};
printf("%d",a);
}    通过VC++6.0运行后,
系统反而不报错,但是运行结果却是
1245028     这是怎么回事????

正确定义int   a[15];后
 a)   printf("%d",&a[0])     运行后,系统也不报错   但是并不是从a[0]开始输出数组中剩余的元素。。而是输出别的一串数字
b)  scanf("%d",a);  是否语法正确??
  其他类型的数组  double\float呢?  又有什么区别吗???
搜索更多相关主题的帖子: 函数 void include double 
2012-03-03 01:07
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:10 
scanf()函数从输入流中读取数据后,就把这些数据放到一个地址所指的空间里,所以他的第二个参数要求的是一个“容器”即地址。scanf("%s",str);这样是正确的。是因为str是数组名,相等于一个地址。
printf("%d",a);
}    通过VC++6.0运行后,
系统反而不报错,但是运行结果却是
1245028
printf()函数是按第一个参数的格式输出第二个参数传来的数值,他不管第二个参数送来什么东西的,只要是个数据就按格式匹配输出,所以系统不报错,但是可能不合符程序员的期望。这里的a也是个数组名,是个地址常量,系统给了他个固定的数值,即1245028。printf()函数就按%d的格式输出了。

这是我的理解,如有不确望大家指正。

梅尚程荀
马谭杨奚







                                                       
2012-03-03 10:38
于祥
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:5
帖 子:1047
专家分:4132
注 册:2011-4-24
收藏
得分:10 
“正确定义int   a[15];后
  printf("%d",&a[0])     运行后,系统也不报错   但是并不是从a[0]开始输出数组中剩余的元素。。而是输出别的一串数字”
 正如2L所说,&a[0]是一个地址,可以输出,但和你所期望的不匹配!只有格式控制为%s时,后边才可以用地址输出,如char a[15]=“abcdefg”;   printf("%s",a);

最基础的往往是你最容易忽略的!
2012-03-03 13:47
快速回复:求助 输出函数的输出项是地址问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.039765 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved