LinuxSir.cn,穿越时空的Linuxsir!

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

有关指针的错误,帮我看看

[复制链接]
发表于 2004-5-22 16:58:48 | 显示全部楼层 |阅读模式
下列程序编译出现错误:
test.c: In function `main':
test.c:5: warning: assignment makes integer from pointer without a cast
test.c:6: warning: assignment makes integer from pointer without a cast

  1. main()
  2. {
  3. short int *ptr=0,a,b;
  4. a=ptr-1;
  5. b=ptr-a;
  6. }
复制代码
发表于 2004-5-22 17:04:59 | 显示全部楼层
a=*ptr-1;
b=*ptr-a;
 楼主| 发表于 2004-5-22 17:09:18 | 显示全部楼层
:thank
如果我想得到指针的地址?该怎么赋值?
发表于 2004-5-22 17:18:44 | 显示全部楼层
int *ptr=0;
printf("%ld",&ptr);
 楼主| 发表于 2004-5-22 17:30:28 | 显示全部楼层
我想把指针ptr的地址作为值给a,却老出错。
该怎么修改?
发表于 2004-5-22 17:30:55 | 显示全部楼层
观看你的code, 我觉的这个指针的作用很让我糊涂, 为什么不直接用变量呢?
如果真的一定要指针的话, 我觉得我会写成下面的形式:

main(){
   int *ptr;
   int a, b;

   ptr = &a;

   a = *ptr - 1;
   b = *ptr - a;

}
发表于 2004-5-22 17:37:10 | 显示全部楼层
to 小鸭:
我举个例子罢了。至于实际应用,如你所言。

to seablue:
指针的长度为4Byte,需要把a的类型定义为int才行(gcc的int刚好为4Byte)
 楼主| 发表于 2004-5-22 17:38:14 | 显示全部楼层
:thank
好象有点明白了;不好意思,指针把我搞晕了

我的目的是为了验证指针地址(ptr-1)到底是减多少?
发表于 2004-5-22 17:40:38 | 显示全部楼层
最初由 seablue 发表
:thank
好象有点明白了;不好意思,指针把我搞晕了

我的目的是为了验证指针地址(ptr-1)到底是减多少?


我很想知道一件事情:
你是想让指针ptr所存的内存地址减一, 还是ptr所指向的变量值减一?
 楼主| 发表于 2004-5-22 17:43:13 | 显示全部楼层
最初由 茜如和小劲鸭 发表
我很想知道一件事情:
你是想让指针ptr所存的内存地址减一, 还是ptr所指向的变量值减一?


我是指针指向的地址减一,看实际是减1还是减2。

另:

我发现可以噢,看看程序:


  1. [linuxer@mydesktop bmp]$ cat test.c
  2. #include <stdio.h>
  3. main()
  4. {
  5. short int *ptr;
  6. printf("ptr=%lx, ptr-1=%lx\n",ptr,ptr-1);
  7. }


  8. 结果:
  9. [linuxer@mydesktop bmp]$ gcc -o test.o test.c
  10. [linuxer@mydesktop bmp]$ ./test.o
  11. ptr=40015920, ptr-1=4001591e
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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