深夜还有高人吗?

beijingayao 2004-03-14 02:45:47
有一个问题急需回答:
unsigned char *j;
int *i;
问:&j 和 &i是同一类型吗?为什么?编译的时候老出错呀:-(

...全文
73 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
Wolf0403 2004-03-17
  • 打赏
  • 举报
回复
E:/vc++/test.c(16): warning c4133: '-' :incompatible types 'unsigned char **' to 'int **'

这是 Microsoft Co. Ltd. C++ Expert Group 专家给你的回答。
beijingayao 2004-03-16
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>
int main(){

unsigned char *j;
int *i;
unsigned char c;
int k;
c='a';
k=5;
i=&k;
j=&c;
printf("*i=%d,*j=%c\n",*i,*j);
printf("i=%d,j=%d\n",i,j);
printf("&i=%d,&j=%d\n",&i,&j);
printf("(&i)-(&j)=%d\n",(&i)-(&j)); //我认为如果是同一类型的话应该可以相加减;
}


在vc++ 6.0下错误信息:
E:/vc++/test.c(16): warning c4133: '-' :incompatible types 'unsigned char **' to 'int **'
cutemouse 2004-03-16
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>
int main(){

unsigned char *j;
int *i;
unsigned char c;
int k;
c='a';
k=5;
i=&k;
j=&c;
printf("*i=%d,*j=%c\n",*i,*j);
printf("i=%d,j=%d\n",i,j);
printf("&i=%d,&j=%d\n",&i,&j);
getch();
}

dev-c++:
gcc.exe "F:\Cygwin\cstudy\test5.c" -o "F:\Cygwin\cstudy\test5.exe" -I"e:\Dev-Cpp\include" -L"e:\Dev-Cpp\lib"

*i=5,*j=a
i=2293600,j=2293607
&i=2293608,&j=2293612
tc2:
#include <stdio.h>
#include <stdlib.h>
int main(){

unsigned char *j;
int *i;
unsigned char c;
int k;
c='a';
k=5;
i=&k;
j=&c;
printf("*i=%d,*j=%c\n",*i,*j);
printf("i=%u,j=%u\n",i,j);
printf("&i=%u,&j=%u\n",&i,&j);
getch();
}
结果:
*i=5,*j=a
i=65488,j=65487
&i=65484,&j=65482

cygwin:
$ ./test5
*i=5,*j=a
i=2293412,j=2293419
&i=2293420,&j=2293424
混吃等死 2004-03-16
  • 打赏
  • 举报
回复
?????
我都糊涂了!
beijingayao 2004-03-16
  • 打赏
  • 举报
回复
分别取i 和 j的地址,这难道有错吗?:---(]
jerryren 2004-03-14
  • 打赏
  • 举报
回复
你提的问题本身就有问题吧?怎么问&i和&j啊?你把出错的那句贴出来看看大家就明白了。
beijingayao 2004-03-14
  • 打赏
  • 举报
回复
还是没有碰到高手能解释清楚,waiting for expert@@@!!
computerhero 2004-03-14
  • 打赏
  • 举报
回复
本质上它们都是地址,但不同的是编译器对它们的解释不同。一个把它理解成指向的区域存放的是char,另一个……。就这么简单。高手请补充。
spacious 2004-03-14
  • 打赏
  • 举报
回复
对,可能编译器提供的空间不一样吧
command1980 2004-03-14
  • 打赏
  • 举报
回复
应该一样吧,都是32位或着16位的二进制树,可能编译器不同会有所不同
beijingayao 2004-03-14
  • 打赏
  • 举报
回复
j是无符号字符型指针,i是int型指针,但是前面还加了一个地址符号啊---—&j 和 &i?他们都是取的地址,我认为他们是同一类型的!
danpianji2002 2004-03-14
  • 打赏
  • 举报
回复
俺也是
Cnxiaowei 2004-03-14
  • 打赏
  • 举报
回复
我是低人
lovingpig 2004-03-14
  • 打赏
  • 举报
回复
不一样的
loki51 2004-03-14
  • 打赏
  • 举报
回复
晕,当然不是同一类型的DD 啦。
keymaker1 2004-03-14
  • 打赏
  • 举报
回复
一个是无符号字符型指针,另一个是int型指针啊。
lvqinhai 2004-03-14
  • 打赏
  • 举报
回复
这和是不是同一类型有什么关系

69,374

社区成员

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

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