| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 534 人关注过本帖
标题:指针问题请求讨论
只看楼主 加入收藏
飘青
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2012-7-8
结帖率:70.59%
收藏
已结贴  问题点数:10 回复次数:7 
指针问题请求讨论
各位大侠。能否详细的跟我解释一下下面两个程序的不同。 第一个程序是错误的。 第二个程序是正确的。

函数一:
#include"stdio.h"
void main()
{
int *dp;
*dp=10002;
printf("%d\n",*dp);
}

函数二:
#include"stdio.h"
void main()
{
int a;
int *dp;
a=10;
dp=&a;
*dp=10002;
printf("%d\n",*dp);
}
搜索更多相关主题的帖子: include 
2012-07-29 16:31
岩枭
Rank: 2
等 级:论坛游民
帖 子:12
专家分:38
注 册:2012-7-18
收藏
得分:3 
···这也用得着解释么···
2012-07-29 16:35
飘青
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2012-7-8
收藏
得分:0 
我想得到比较实质性的回答。 我的重点在于 *dp=10002; 这个语句在第二个函数中生效。在第一个中未能生效。缘由是什么。 我刚看指针。请各位指教
 
2012-07-29 16:40
LShang
Rank: 4
来 自:China
等 级:业余侠客
威 望:3
帖 子:183
专家分:258
注 册:2010-12-24
收藏
得分:3 
int *dp;
编译器会在栈里开辟一块sizeof(int *)大小的内存,用来存放dp。
程序一,dp未被初始化,内容为垃圾数据,此时dp也就是常说的野指针。
*dp,表示以dp的值为地址取数据。
而dp未被初始化,所以也就是在以垃圾数据作为地址取数据。

程序二,dp = &a; 将dp赋值为变量a的地址,此时dp指向变量a。
*dp,仍以dp的值为地址取数据。
此时dp的值为变量a的地址,所以取到的数据就是a的值。
*dp = 10002;
道理同上
程序一将10002写入了以垃圾数据作为地址的区域,所以出错。
程序二将10002写入了以a的地址作为地址的区域,即写入了变量a。

学如逆水行舟,不进则退
士不可以不弘毅,任重而道远
2012-07-29 16:59
madfrogme
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:3 
楼主加油
*・゜゚・*:.。..。.:*・'(*゚▽゚*)'・*:.。. .。.:*・゜゚・*

The quieter you become, the more you can hear
2012-07-29 17:06
飘青
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2012-7-8
收藏
得分:0 
谢谢 非常的感谢。 我刚才也想到这点。但是不同断定。 听您这番解释。 我明白了
2012-07-29 17:07
wan350580373
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-6-6
收藏
得分:0 
加油
2012-08-27 23:17
asdf_1234
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-8-30
收藏
得分:0 
加油
2012-08-30 09:52
快速回复:指针问题请求讨论
数据加载中...
 
   



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

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