| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 803 人关注过本帖
标题:初级问题!
只看楼主 加入收藏
mashrb
Rank: 2
等 级:论坛游民
帖 子:47
专家分:29
注 册:2010-6-30
结帖率:76.92%
收藏
已结贴  问题点数:20 回复次数:11 
初级问题!
#include "stdio.h"
main() {
   int n;
   int *pa=&n;
   scanf("%d",pa);
   printf("n=%d",*pa);
}

#include "stdio.h"
main() {
   char n[10];
   char *pa=n;
   scanf("%s",pa);
   printf("n=%s",pa);
}
仅仅由于数据类型的不同,为什么在printf("n=%d",*pa)与printf("n=%s",pa)中,pa都声明为指针变量,然而却一个要加*号(int 类型),一句不加*号呢(char 类型)??

特别求教!请讲详细点,我在百度并没有查到相关答案!!

[ 本帖最后由 mashrb 于 2010-6-30 19:09 编辑 ]
搜索更多相关主题的帖子: 初级 
2010-06-30 18:26
xiaomanaruto
Rank: 6Rank: 6
等 级:侠之大者
帖 子:79
专家分:443
注 册:2010-4-1
收藏
得分:20 
第一个你只是定义了一个普通的整型变量指针,在输出时要加*,表示输出的元素;
第二个你定义的是一个指向以为数组的指针,它保存的是该数组的手地址,在输出时因该输出相应的字符串,及先找到字符串的首地址,你看看书,在输出字符串时都是在那里填写地址的。
2010-06-30 19:21
mashrb
Rank: 2
等 级:论坛游民
帖 子:47
专家分:29
注 册:2010-6-30
收藏
得分:0 
就是为什么显示字符串时(printf)可以直接用指针的方式,而显示整型数时就要用指针进行取值呢??
2010-06-30 19:51
sambc
Rank: 1
等 级:新手上路
帖 子:7
专家分:5
注 册:2010-4-21
收藏
得分:0 
第一个你正常理解就好,主要就是第二个。
n[10]这是一个数组,而n是这个数组的数组名,它是这个数组的首地址,就是说n的值是n[0](数组的第一个元素)的地址,所以把它赋值给一个指针变量时不需要取地址符&,而是直接*pa=n,就是因为n本身就是一个地址。
同理,第二个程序printf的时候,它的用意是想告诉你n的真实身份,所以printf("n=%s",pa);这里的pa也就是n的的值也就是数组n[0]的地址。
总之一句话,记住数组名代表的是这个数组的第一个元素的地址就可以了!
2010-06-30 20:05
sambc
Rank: 1
等 级:新手上路
帖 子:7
专家分:5
注 册:2010-4-21
收藏
得分:0 
以下是引用mashrb在2010-6-30 19:51:24的发言:

就是为什么显示字符串时(printf)可以直接用指针的方式,而显示整型数时就要用指针进行取值呢??
不是吧,你确定那是在输出字符串吗?应该是输出数组的首地址吧?
2010-06-30 20:10
sambc
Rank: 1
等 级:新手上路
帖 子:7
专家分:5
注 册:2010-4-21
收藏
得分:0 
看了2楼的大哥,看来是我无知了,嘿嘿!
2010-06-30 20:15
vs_inzaghi
Rank: 5Rank: 5
来 自:湖北
等 级:职业侠客
威 望:1
帖 子:303
专家分:364
注 册:2009-8-17
收藏
得分:0 
补充一点,数组也属于构造类型,和结构体共用体一样,与一般数据类型有点区别……

我很懒,但我讨厌别人说我懒……
2010-06-30 20:25
sambc
Rank: 1
等 级:新手上路
帖 子:7
专家分:5
注 册:2010-4-21
收藏
得分:0 
额,高人真多,都听不懂。大一菜鸟飞过~~~~~~~~
2010-06-30 20:36
mashrb
Rank: 2
等 级:论坛游民
帖 子:47
专家分:29
注 册:2010-6-30
收藏
得分:0 
回复 5楼 sambc
回复5楼,那里的确是显示字符串。
v.rar (5 KB)



输入 China
显示 n=China

[ 本帖最后由 mashrb 于 2010-6-30 20:42 编辑 ]
2010-06-30 20:41
sambc
Rank: 1
等 级:新手上路
帖 子:7
专家分:5
注 册:2010-4-21
收藏
得分:0 
回复 9楼 mashrb
嗯,我知道了,我们没学到那个点上,还不知道有这回事,或者是我上课没好好听哈!嘿嘿!
2010-06-30 20:53
快速回复:初级问题!
数据加载中...
 
   



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

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