以文本方式查看主题 - 中文XML论坛 - 专业的XML技术讨论区 (http://bbs.xml.org.cn/index.asp) -- 『 C/C++编程思想 』 (http://bbs.xml.org.cn/list.asp?boardid=61) ---- 荤菜求助:指针老问题 (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=47465) |
-- 作者:荤菜 -- 发布时间:5/24/2007 1:25:00 PM -- 荤菜求助:指针老问题 /*输出p的地址输出a[0]的地址,然后相减打印出结果*/ main() {static int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; int *p; for(p=a;p<a[0]+12;p++) printf("%d-%d=%d ",p,a[0],(p-a[0])); /*假如p=3,a[0]=1,p-a[0]=1,结果我不明白*/ getch(); } 问题补充:还有为什么我在tc编译下的p的地址相差2,在devcpp编译下的地址相差4,不是整型的数据在内存中占的地址都为2个字节吗? 还有在这个程序中为什么只能用p-a[0],而不能用p+a[0],用p+a[0]算不出来. |
-- 作者:一分之千 -- 发布时间:5/24/2007 2:01:00 PM -- 整形占几位取决于你所使用的编译器不同以及你机器为16 32 或者64位的不同而有所不同 后边一个问题,你想算什么东西???地址值的加和?? |
-- 作者:荤菜 -- 发布时间:5/25/2007 7:25:00 PM -- 我只是单纯的好奇,我不明白为什么减法可以,一用加法就提示出错. |
-- 作者:荤菜 -- 发布时间:5/25/2007 7:35:00 PM -- 第2个问题应这样问:为什么用p+a[0]算不出结果,哪怕是错的. |
-- 作者:卷积内核 -- 发布时间:5/26/2007 8:11:00 AM -- static int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; int *p; for([color=#FF0033]p=a[0];[/color]p<a[0]+12;p++)//-----p要指向a的首地址!! printf("%d-%d=%d ",p,a[0],(p-a[0])); “还有为什么我在tc编译下的p的地址相差2,在devcpp编译下的地址相差4,不是整型的数据在内存中占的地址都为2个字节吗? ”---------字符存储要按照数组对齐,编译器不同对齐方式也不一定相同。
|
-- 作者:荤菜 -- 发布时间:5/26/2007 3:07:00 PM -- 呵呵,我的确把指针搞糊涂了,谢谢啊 |
-- 作者:huochai2008 -- 发布时间:6/18/2007 1:49:00 PM -- 顶 |
-- 作者:yjtawfg -- 发布时间:6/21/2007 12:12:00 PM -- 顶说得不错 |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
78.125ms |