lin_victor163 - 试用期 一级 用引用是正解,另外用指针的指针也可。最符合楼主的意图。
超链分析 提供了另外一种解决方法。
point(char *p) 这个调用是指针的值传递。
{ p+=3}此处的p和main的p是两回事,调用是生成一个零时变量 char *p,把main里的p赋值给它。所以改变不了。
char b[4]={'a','b','c','d'},*p=b这样声明是个很恶劣的习惯,有的编译器可能会把p作为常量。可能是编译通不过原因之一。
搞在一行没任何意义,对于时间或空间效率没任何的影响。
把*p=b 另做一行,这样可读性好。
编程中,很多东西要你自己去摸索,才能真正的理解。关于地址与值的问题,其实你自己可以试,把变量的地址输出来看看看是不是一样,比如 printf("%x",&a)这样就是以把变量a的地址用16进制的方式输出来,看看地址到底是怎么一回事。传值与传地址可以这样理解:
就像我把我写的作文抄了一份给你,你拿去看了之后把有的地方改了,现在我要交作文,而我有一份,所以我直接交了,我交的作文内容并没有变,这就是传值,即值传递。
同理,如果我把我的作文直接给你,你看了后也把有些地方改了,现在我也要交,你只能还给我,我再交,这时我交的就是被你改过的了,这就是传地址,即引用传递。
这只是我的理解,有误的地方还请指正。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)