LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 990|回复: 3

请教大家一个问题!!一个很简单的程序,但是搞不懂指针的值怎么不一样!

[复制链接]
发表于 2006-11-15 18:32:42 | 显示全部楼层 |阅读模式
  1. #include <stdio.h>

  2. int main()
  3. {
  4.         int i = 1;
  5.         char s;
  6.         void *p = i;

  7.         p = (void *)i;

  8.         printf("p = %0x\n", &p);
  9.         printf("address i = 0x%0x\n", &i);

  10.         return 0;
  11. }
复制代码


返回i 和p的地址怎么不一样啊??若返回不是p的地址,那么它返回的值就是1!

  1. #include <stdio.h>

  2. int main()
  3. {
  4.         int i = 1;
  5.         char s;
  6.         void *p = &i;

  7.         p = (void *)[color=blue]&[/color]i;

  8.         printf("p = %0x\n", &p);
  9.         printf("address i = 0x%0x\n", &i);

  10.         return 0;
  11. }
复制代码

返回的地址才是一样的!

p = (void *)i  实现什么功能??
p本身是个指针,然后它指向什么??
 楼主| 发表于 2006-11-15 18:37:36 | 显示全部楼层
呃,搞错了一点,初始的时候应该是:
void *p = NULL;的!
回复 支持 反对

使用道具 举报

发表于 2006-11-15 19:23:10 | 显示全部楼层
p = (void *)i; 这里P是一个指针,它的值,也就是它指向的内存地址是 i 这样一个值
p = (void *)&i; 这里P也是指针,但是它的值是i的内存地址,这就是&这个字符的作用了,它使你得到i的内存地址。所以*p就代表了i的值了。
回复 支持 反对

使用道具 举报

发表于 2006-11-15 20:05:49 | 显示全部楼层
p和i是两个变量,他们的地址不同没什么奇怪
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表