| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 920 人关注过本帖
标题:哪位大侠能帮我解答一下这个关于指针的问题?
只看楼主 加入收藏
指向指针的指针
Rank: 1
等 级:新手上路
帖 子:339
专家分:0
注 册:2004-8-8
收藏
 问题点数:0 回复次数:8 
哪位大侠能帮我解答一下这个关于指针的问题?

各位大侠声明一个指针(int *p;)后是不是系统就给这个指针自动分配了个地址?这个地址是什么?没有用的?是不是*p就可能覆盖了这个地址原有的数据?

是不是 *p=77; 是错误的? 如果 int a=77; *p=a; 错了没有?? 那 int a=77; p=&a; 是对是错?

搜索更多相关主题的帖子: 指针 解答 
2004-08-10 20:11
wonderfulday
Rank: 1
等 级:新手上路
帖 子:97
专家分:0
注 册:2004-7-28
收藏
得分:0 

int a=77;

int *p;

p=&a; //*p=a;

对指针p的初始化要是人为的,如果是编译器对p初始化容易出错


2004-08-10 20:25
real
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2004-8-9
收藏
得分:0 

int *p ; /*只是定义了一个指针变量,没有分配地址*/

在使用指针变量之前必须给指针变量赋值,

int a=1,*p=&a;

这时p指向a的地址

2004-08-10 20:35
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 

其实是已经分配了地址!

main() { int *p; int i;

printf("%d %d\n",&i,p); /*-64,1366*/

getch(); } 这个程序是输出变量i和指针*p的地址, 大家可以看到程序的答案是-64和1366

要声明的是,这个程序是在标准模式下编译的.

可以看到-64,和1366分开得很远(其实对于我们要处理成千上万的数据来说,这两个地址简直就是邻居) 所以只定义一两个指针而不去重新定义他们的地址并不会损害小程序,所以编译器一般都是警告了帐.但是,如果你写的是大程序,而且你又有这样乱 定义指针而不规定地址的情况,很容易就会造成覆盖数据这样的情况出现.

打个比方,如果a的数据很长,长到了1366.那么如果随便用*p指向的地址写入新的数据的话,就会覆盖掉了a原来的数据.

以上是我的个人不成熟的看法,其他人的看法可以参照精华帖子

[此贴子已经被作者于2004-08-10 21:30:43编辑过]


淘宝杜琨
2004-08-10 21:23
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 

是不是 *p=77; 是错误的? 如果 int a=77; *p=a; 错了没有?? 那 int a=77; p=&a; 是对是错?

1 的效果是指针指向77,正确但不知道安全不安全

2 p指向的内容=77 正确

3也是正确的

[此贴子已经被作者于2004-08-10 22:26:08编辑过]


淘宝杜琨
2004-08-10 21:25
zxp
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2004-7-18
收藏
得分:0 

是不是 *p=77; 是错误的?//运行错 如果 int a=77; *p=a; 错了没有??//运行错 那 int a=77; p=&a; 是对是错?//编译、运行都不错。

因为只有最后一种才是改变了指针P的指向。

2004-08-10 21:58
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 

我不理解你所谓的运行错是什么

但是,所有的例子除了[3]的指针的指向改变之外.其他都没有改变

[1] 为指向 77 没变

[2] 把p指的赋值为77

[3] 我不用说了吧,你已经理解了

[此贴子已经被作者于2004-08-10 22:27:07编辑过]


淘宝杜琨
2004-08-10 22:20
指向指针的指针
Rank: 1
等 级:新手上路
帖 子:339
专家分:0
注 册:2004-8-8
收藏
得分:0 
到底int *p之后分配地址了没有?是随机分配?地址是NULL?

/sign.png" border="0" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://www./sign.png');}" onmousewheel="return imgzoom(this);" alt="" />
2004-08-11 16:18
指向指针的指针
Rank: 1
等 级:新手上路
帖 子:339
专家分:0
注 册:2004-8-8
收藏
得分:0 

int a=77

int *p=&a

这样有错吗?


/sign.png" border="0" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://www./sign.png');}" onmousewheel="return imgzoom(this);" alt="" />
2004-08-11 17:00
快速回复:哪位大侠能帮我解答一下这个关于指针的问题?
数据加载中...
 
   



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

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