当前位置: 代码迷 >> C语言 >> [特别求助]关于C的编写风格以及对指针的理解问题!
  详细解决方案

[特别求助]关于C的编写风格以及对指针的理解问题!

热度:130   发布时间:2007-08-03 23:28:57.0
[特别求助]关于C的编写风格以及对指针的理解问题!
关于C的书写风格问题,我要求助大家一下了,请帮我改正一下我下面的书写格式:
我同学对我说 只要我能理解下面的*(++p),&p,p,++p,*p,*p++,++*p,*p,k,p,&k每1个结果的含义和关系,就可以说明我掌握了50%的指针了,我研究了半天都不会啊
#include <stdio.h>
int main (void)
{
int *p,k=0;
p=&k;
*p=100;
printf("%x\n",&p);
printf("*(++p)=%x\t&p=%x\tp=%x\t++p=%x\t*p=%x\t*p++=%d\t++*p=%d\t*p=%d\tk=%d\tp=%x\t&k=%x\t",*(++p),&p,p,++p,*p,*p++,++*p,*p,k,p,&k);
printf("*p=%x\tp=%x\tk=%d\t",*p,p,k);
return 0;
}
以上的不用说了 光看就头晕了。
printf("*(++p)=%x\t&p=%x\tp=%x\t++p=%x\t*p=%x\t*p++=%d\t++*p=%d\t*p=%d\tk=%d\tp=%x\t&k=%x\t",*(++p),&p,p,++p,*p,*p++,++*p,*p,k,p,&k);
主要是我编译后出现了问题啊!*(++p)=1我用TC2.0编译的而且看起来很乱;看我的附件图 怎么样通过调整使数据对齐容易看 我明天晚上晚点才能看 请大哥们帮帮忙吧!

[此贴子已经被作者于2007-8-3 23:47:48编辑过]

搜索更多相关的解决方案: 指针  风格  编写  

----------------解决方案--------------------------------------------------------
[IMG]F:\11.jpg[/IMG]
----------------解决方案--------------------------------------------------------
正好刚看完这一章,下面是我的理解,错了高手一定要指正!!!

*(++p):使指针变量指向下一个地址,取其值。厄,不是数组的话,值可不是确定的哦,貌似不会像上面这么用
&p:取指针变量p的地址
p:指针变量地址,通过p=&k赋值
++p:使指针指向下一个数据地址,常用于数组,很灵活。用在这里貌似不太好吧,值不是确定的哦
*p:取指针变量p所指向地址的值,即变量k的值
*p++:取指针变量p所指向地址的值,然后使其值加1
++*p:区指针变量p所指向的地址,使其值加1后,取其值
*p:同上
k:变量k,通过指针变量赋值100
p:同上
&k:取变量k的地址
----------------解决方案--------------------------------------------------------
http://bbs.bc-cn.net/viewthread.php?tid=115777&star=at#


讲得很细..
----------------解决方案--------------------------------------------------------
指针,难啊!
----------------解决方案--------------------------------------------------------
以下是引用leeldy在2007-8-3 23:55:47的发言:
正好刚看完这一章,下面是我的理解,错了高手一定要指正!!!

*(++p):使指针变量指向下一个地址,取其值。厄,不是数组的话,值可不是确定的哦,貌似不会像上面这么用
&p:取指针变量p的地址
p:指针变量地址,通过p=&k赋值
++p:使指针指向下一个数据地址,常用于数组,很灵活。用在这里貌似不太好吧,值不是确定的哦
*p:取指针变量p所指向地址的值,即变量k的值
*p++:取指针变量p所指向地址的值,然后使其值加1
++*p:区指针变量p所指向的地址,使其值加1后,取其值
*p:同上
k:变量k,通过指针变量赋值100
p:同上
&k:取变量k的地址

对,这个是比较简单的 就是说明下以上几个量谁和谁相等,谁和谁的地址相等,谁的地址加或减得到另一个量,还没有加上数组,再加上数组 我恐怕就更云里雾里了 ,但是我开始就碰壁啊,虽然每台机器运行的答案肯定不一样,但是我怎么会得到*(++p)=1想了一宿了 啊


----------------解决方案--------------------------------------------------------
以下是引用I喜欢c在2007-8-4 0:05:24的发言:
http://bbs.bc-cn.net/viewthread.php?tid=115777&star=at#


讲得很细..

先快速看了1便感觉挺详细,先收藏晚上回来再详细研究,谢谢,白天没时间学 哎!


----------------解决方案--------------------------------------------------------

由转义字符一个一个分开看,就不会感觉很乱了.
不过*p++什么不是一般用于数组吗?这种用法我没有见过
你哪里弄来的啊?

[此贴子已经被作者于2007-8-4 21:10:51编辑过]


----------------解决方案--------------------------------------------------------
但是我怎么会得到*(++p)=1想了一宿了 啊???
这个问题我认为:
你只初始化了指针P,并没有初始化他的下一个地址,所以在*(++p)中可能是输出了内存中以前的信息。
我们用指针的时候要小心指针乱指,尤其不要越界。一不小心把内存中的重要信息给覆盖掉了就只有哭了。

细听大家的见解。
----------------解决方案--------------------------------------------------------
  相关解决方案