指针是变量还是地址?

bdbox@qq.com 2008-08-05 02:47:59
请问各位,我看谭浩强的书上说,指针是地址,存放地址的变量称为指针变量。但看了其它书又说,指针是变量?指针是变量,还是地址呢?晕了~
...全文
984 66 打赏 收藏 转发到动态 举报
写回复
用AI写文章
66 条回复
切换为时间正序
请发表友善的回复…
发表回复
bzh1113 2011-03-01
  • 打赏
  • 举报
回复
[Quote=引用 44 楼 turntogo 的回复:]
呵呵,谭浩强的书上说的没错,指针就是地址,存放指针的变量,才叫指针变量。
只是现在的人说指针的时候,一般是指的指针变量。
[/Quote]
说的对的
bdbox@qq.com 2008-08-06
  • 打赏
  • 举报
回复
1、对于概念:(谭浩强书上提到)
一个变量的地址称为该变量的“指针”。如果有一个变量专门来存放另一个变量的地址(指针)就称为指针变量。
比如: int *p :p表示指针变量,*p表示p指向的变量。
2、对于选项:有了上面概念的支持,我想答案也就很明显了。
解释如下:
A,正确:如果你定义了一个整形指针,int *p,你不能一会指向float型变量,一会指向char变量。
B,正确:参见概念。
D,正确:既然说指针变量是地址,所以地址的值不可能是浮点数。
C,错误(也即为答案):这句话看起来就别扭。理论上,指针变量里面可以存放任意整形值(尽管有些值不可到达……)。变量的地址也可以存放在任意的指针变量之中。(但是区分于指向)
不知道阐述清除了没有。
bdbox@qq.com 2008-08-06
  • 打赏
  • 举报
回复
另外,这是一道C语言的题。
bdbox@qq.com 2008-08-06
  • 打赏
  • 举报
回复
fengogo 老兄:

试一下这段代码:

int x = 3;
float ff = 0.03;
int *px = &x;
float *pf = &ff;

px = 3;
pf = 3;
//pf = 0.3;

你会发现,pf是可以赋整数值的。但不能赋浮点数值(注释了的部分)。

上google上一so就可见答案了。原文说是:因为指针是地址,所以可以赋整数值不能赋浮点数值。(难道是说地址只能是整数的?)
hexiaofeng2006 2008-08-06
  • 打赏
  • 举报
回复
例如int* p
其中p是一个变量,它在程序中也会被分配内存。通常在该内存会存储一个地址。
*p就是指向那个存储的地址地方。
建议看一下操作系统方面的书。
那样你会对堆和栈很好的了解
bdbox@qq.com 2008-08-06
  • 打赏
  • 举报
回复
大家看看以下的这个贴,以前我没发现。

http://topic.csdn.net/t/20060727/08/4907779.html

看来提这个问题的不只是我一个人。
pigDeity 2008-08-06
  • 打赏
  • 举报
回复
[Quote=引用 59 楼 bdbox 的回复:]
fengogo 老兄:

试一下这段代码:

int x = 3;
float ff = 0.03;
int *px = &x;
float *pf = &ff;

px = 3;
pf = 3;
//pf = 0.3;

你会发现,pf是可以赋整数值的。但不能赋浮点数值(注释了的部分)。

上google上一so就可见答案了。原文说是:因为指针是地址,所以可以赋整数值不能赋浮点数值。(难道是说地址只能是整数的?)
[/Quote]

你见过浮点数的地址吗
realdragon2 2008-08-06
  • 打赏
  • 举报
回复
LZ,这个帖子可以结束了.
fengogo 2008-08-06
  • 打赏
  • 举报
回复
也许用的编译器不同.C++编译器一般都需要进行强制转换才能够赋值.
float *p = (float*)(int)0.3f; // 整数可以转换成地址..
沙漠里的海豚 2008-08-06
  • 打赏
  • 举报
回复
一个指针就是一个指针变量啊
星光伴月 2008-08-05
  • 打赏
  • 举报
回复
C: 呵呵,那可是经过强制转换之后的类型(int*)呀,所以才可以的,所以C应该是正确的。
fengogo 2008-08-05
  • 打赏
  • 举报
回复
[Quote=引用 50 楼 bdbox 的回复:]
我想最好还是把指针=地址,指针变量用于存储指针,指针变量的类型是指针类型,这样区分是比较好的吧。
[/Quote]

随你怎么用.自己能明白就好.
A.一个指针变量只能指向同一类型的变量。
B.一个变量的地址称为该变量的指针。
C.只有同一类型变量的地址才能存放在指向该类型变量的指针变量之中。
D.指针变量可以赋任意整数,但不能赋浮点数。

A: 一般若把不同类型的变量地址赋值给pointer,那么会导致编译错误.但是在C++中,子类对象的地址可以赋给指向父类的指针.
B: 各人爱好
C: 比较难理解这句话.指针变量可以存放任意地址, 你甚至可以这样做: int *p =(int*)0x00000001; 把一个32位整数强制转为地址.
D: 正如C,类型不同怎能随意赋值. 整数也不能随便赋给指针啊.

我觉的数据类型的作用在编译后就是确定一次操作在内存中读取多少字节数据.
iBug168 2008-08-05
  • 打赏
  • 举报
回复
[Quote=引用楼主 bdbox 的帖子:]
请问各位,我看谭浩强的书上说,指针是地址,存放地址的变量称为指针变量。但看了其它书又说,指针是变量?指针是变量,还是地址呢?晕了~
[/Quote]

这种叫法应该是把指针变量简称为了指针.


所以应该不矛盾.
panthenia 2008-08-05
  • 打赏
  • 举报
回复
当然是变量,不过存储的是地址就是了。
bdbox@qq.com 2008-08-05
  • 打赏
  • 举报
回复
yaazz 是什么意思?没看太懂
yaazz 2008-08-05
  • 打赏
  • 举报
回复
学生真幸福
bdbox@qq.com 2008-08-05
  • 打赏
  • 举报
回复
我想最好还是把指针=地址,指针变量用于存储指针,指针变量的类型是指针类型,这样区分是比较好的吧。
星光伴月 2008-08-05
  • 打赏
  • 举报
回复
我的答案是D。
bdbox@qq.com 2008-08-05
  • 打赏
  • 举报
回复
fengogo 真有意思,以下是一关于指针的题:

c语言指针概念问题(选择题).

不正确的指针概念是___
A.一个指针变量只能指向同一类型的变量。
B.一个变量的地址称为该变量的指针。
C.只有同一类型变量的地址才能存放在指向该类型变量的指针变量之中。
D.指针变量可以赋任意整数,但不能赋浮点数。
fengogo 2008-08-05
  • 打赏
  • 举报
回复
我觉的把指针 = 地址 反而容易搞混啊. 变量:variable , 指针: Pointer ,地址:address 都分开不是挺好吗?
加载更多回复(46)

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧