首页 新闻 会员 周边

c++指针赋值

0
[已关闭问题] 关闭于 2014-07-28 23:12

为什么字面值常量可以赋值给指针,整型0却不可以呢

如:

int *pi=0//没问题

为什么正确? 0的默认类型不是整型吗,整型不是不可以赋值给指针的吗

北冥飞鱼的主页 北冥飞鱼 | 初学一级 | 园豆:189
提问于:2014-01-13 12:13
< >
分享
所有回答(6)
0

你是说 int * pi = 0 成立而 int * pi = 2; 不成立,对吧!

没关系,int * pi = (int *)2; 是成立的。

Launcher | 园豆:45045 (高人七级) | 2014-01-13 13:11

没有有高手吗

支持(0) 反对(0) 北冥飞鱼 | 园豆:189 (初学一级) | 2014-01-13 17:49

@Hrishikesh: 你就是高手。

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2014-01-13 17:53
0

依你的意思莫非应该是 int *p = &0;才对。

空明流光 | 园豆:106 (初学一级) | 2014-01-13 13:31

没有高手吗

支持(0) 反对(0) 北冥飞鱼 | 园豆:189 (初学一级) | 2014-01-13 17:50
0

0是比较特殊的。

bitbug | 园豆:470 (菜鸟二级) | 2014-01-13 15:13

没有高手吗

支持(0) 反对(0) 北冥飞鱼 | 园豆:189 (初学一级) | 2014-01-13 17:50
0

我没实验,都是猜的.

指针变量就是一个整形变量

还有,你每个人回复一个"没高手吗"让人很恶心

而且字面值常量从来没听说过``或者是我忘了

吴瑞祥 | 园豆:29449 (高人七级) | 2014-01-14 11:52
0

0不仅可以表示数字,还可以表示空指针.

你看下NULL的宏定义

/* Define NULL pointer value */
#ifndef NULL
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif

 

你可以将 0 看成是((void *)0)

叶飞影 | 园豆:213 (菜鸟二级) | 2014-01-15 13:04

照这上面的宏定义,NULL的值为0呀不是((void*)0)

支持(0) 反对(0) 北冥飞鱼 | 园豆:189 (初学一级) | 2014-01-18 22:36

@Hrishikesh: 

0不仅可以表示数字,还可以表示空指针,((void*)0)和0无区别.

支持(0) 反对(0) 叶飞影 | 园豆:213 (菜鸟二级) | 2014-01-20 17:39
0

字符和整形不是一个概念,

char*s="abcd",这里的字符实际上存储在一个无名的数组里,书上说是把第一个字符的地址了这个s指针,然后通过s指向这个字符串,但我觉得字符串实际上存在一个数组里,把这个数组的地址给了指针,再通过指针来指向,而数字就不行了,因为字符是特殊的

学习升华 | 园豆:202 (菜鸟二级) | 2014-04-21 13:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册