你是说 int * pi = 0 成立而 int * pi = 2; 不成立,对吧!
没关系,int * pi = (int *)2; 是成立的。
没有有高手吗
@Hrishikesh: 你就是高手。
依你的意思莫非应该是 int *p = &0;才对。
没有高手吗
0是比较特殊的。
没有高手吗
我没实验,都是猜的.
指针变量就是一个整形变量
还有,你每个人回复一个"没高手吗"让人很恶心
而且字面值常量从来没听说过``或者是我忘了
0不仅可以表示数字,还可以表示空指针.
你看下NULL的宏定义
/* Define NULL pointer value */
#ifndef NULL
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif
你可以将 0 看成是((void *)0)
照这上面的宏定义,NULL的值为0呀不是((void*)0)
@Hrishikesh:
0不仅可以表示数字,还可以表示空指针,((void*)0)和0无区别.
字符和整形不是一个概念,
char*s="abcd",这里的字符实际上存储在一个无名的数组里,书上说是把第一个字符的地址了这个s指针,然后通过s指向这个字符串,但我觉得字符串实际上存在一个数组里,把这个数组的地址给了指针,再通过指针来指向,而数字就不行了,因为字符是特殊的