标题:[求助]2重指针的问题-->myajax95转移-->baidu转移
只看楼主
热情依然
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:715
专家分:0
注 册:2005-4-5
得分:0 
以下是引用aiyuheng在2006-7-24 12:54:27的发言:

用java吧 没显示的指针也自动回收垃圾

你邪恶,不过C#可以让程序员用指针哦只要用unsafe关键字


c++/C + 汇编 = 天下无敌
2006-07-24 12:56
baidu
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:3811
专家分:0
注 册:2005-11-4
得分:0 
JAVA是垃圾,当然我不是说你的java,是说神的JAVA

偶放弃所有文章版权,偶在BCCN论坛任何贴子,可转贴,可散发,可抄袭,可复制,可被冒名顶替,可被任何人引用到任何文章中且不写出引文出处,偶分文不取。
2006-07-24 12:57
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-07-24 12:58
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
得分:0 
穆扬,
zai zhi zhen ceng mian, C he C++ shi mei you qu bie de. Chong ben zhi shang lai jiang, zhi zhen shi di zhi. C++ bing mei you fu yu ta xin de han yi.

热情依然, your post in 152floor is not right.

let's see a democode, try it.

#include <string>
#include <iostream>
using namespace std;

void test1()
{
int * p = new int;
cout<<p<<endl;
*p = 3;
cout<<*p<<endl;
double * d = new double;
d = (double *) p;
cout<<d<<endl;
}

void test2()
{
int * p = new int;
cout<<p<<endl;
*p = 3;
cout<<*p<<endl;
double * d = new double;
p = (int *) d;
cout<<p<<endl;
*d = 3.0;
cout<<*p<<endl;
}

int main()
{
test1();
test2();
return 0;
}



自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2006-07-24 12:59
热情依然
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:715
专家分:0
注 册:2005-4-5
得分:0 
以下是引用穆扬在2006-7-24 12:48:57的发言:

这同样容易引起自相矛盾
你不觉得吗?

int *pi;
double *pd;
……
pi=(int *)pd; 非法


void *p;
……
*(int *)p 却合法

该如何解释呢?

(int *)pd是合法的表达式却不可以给 pi 赋值
但 (int *)p 却可以作 “*”运算
岂非咄咄怪事?

我知道你想问什么了 在C++中 void *是泛型指针,也就是说可以指向任何类型,至于什么时候知道自己指向的类型,那就要编译器进行 RTTI (运行时类型识别)这一点都不矛盾


c++/C + 汇编 = 天下无敌
2006-07-24 13:00
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
得分:0 
我也说点自己不太确定的想法,我想:
C++把void 作为最特殊的指针类型,是为了它的灵活性,它可以指向任何对象(包括自己定义的类型)。
我想你应该玩过扑克吧。void指针就象是癞子一样,他可以做为桥梁,对很多时候,都使函数具有通用性。
比如void* func(void*);这里的参数都可以经过类型转换以后得来。

对于其他的类型,我认为,由于他们本身的关系是不明确的,如果是继承和派生的关系,当然是可以自行变换的。
然而对于任意的两个类型指针,那么会因为没有包含关系,而不知道如何取舍属性,因此如此规定会使得程序员更少的犯错,规范代码

任何指针变化,因为都是指针层面,“所以把他看成是一种东西吧”。
只要是经过“强制”类型转换都是可行的,只是直接让编译器为它转化就不是随意的了

[此贴子已经被作者于2006-7-24 13:03:27编辑过]


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-07-24 13:00
热情依然
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:715
专家分:0
注 册:2005-4-5
得分:0 
我弄错了,我152 楼的说法是错误的
int *pi;
double *pd;
……
pi=(int *)pd;
这样是可以的,对不起误导了穆兄

c++/C + 汇编 = 天下无敌
2006-07-24 13:06
aiyuheng
Rank: 1
等 级:新手上路
威 望:1
帖 子:656
专家分:0
注 册:2006-1-12
得分:0 
以下是引用baidu在2006-7-24 12:57:36的发言:
JAVA是垃圾,当然我不是说你的java,是说神的JAVA


when i want to ask anyone,i will ask myself first.
2006-07-24 13:08
热情依然
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:715
专家分:0
注 册:2005-4-5
得分:0 
kai,thank you for point out my mistake. thank you!!!

c++/C + 汇编 = 天下无敌
2006-07-24 13:09
aiyuheng
Rank: 1
等 级:新手上路
威 望:1
帖 子:656
专家分:0
注 册:2006-1-12
得分:0 
kai 大哥是不是把中文输入法都给删了啊!!
我也得用金山词霸啊!!!

when i want to ask anyone,i will ask myself first.
2006-07-24 13:13



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-79710-1-1.html




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

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