| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1424 人关注过本帖
标题:这次传的应该是地址了吧?怎么还是没返回值呢?
只看楼主 加入收藏
windflush
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:886
专家分:0
注 册:2007-7-1
收藏
得分:0 
5楼说的话很经典啊~~

2007-07-07 16:02
crazyboy216
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2007-6-28
收藏
得分:0 
*号的优先级比+=高多了,*P+=3肯定是值+3。
楼主的意思应该是地址+3,所以该成P+=3是可以的或者是指向指针的指针,如8楼所写的。
8楼,你的C学的应该很好,可以告送我你的QQ吗???
2007-07-07 23:35
静夜嘶
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2007-7-2
收藏
得分:0 
以下是引用maoguoqing在2007-7-7 13:17:56的发言:

汗一个先,先说2楼的程序,两个函数都是int的没有返回值,

如果如三楼所说,楼主需要的是地址加3,那么4楼就错了,*p+=3; 就是*p值加3

所以说,二楼的程序,最后b数组变成{'d','b','c','d'}, 所以最后会输出'd',

再说5楼,你说了一句很经典的话,其实只要把传任何东西都看成传值就好了

如果楼主是想地址+3,即使p指向b[3]的话,在2楼的基础上这样改就可以了。


void point(char**p) //用指向指针的指针
{
*p+=3; //*p还是一个指针,所以是指针+3,最后*p指向b[3]
}

int main()
{
char b[4]={'a','b','c','d'};
char *p=b;

point(&p);
printf("%c\n",*p);
printf("%c\n",b[0]);//b[0] = 'a' ,没有改变

return 0;
}


回6楼,你要知道[]比*的优先级高
回7楼,*P+=3 是值+,所以是d,p+3是地址+,所以是'e'.


学到东西,谢谢


2007-07-08 02:42
aaaasix
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2007-6-10
收藏
得分:0 

太难了!
像这种通过值传递实现的东西可以改成RETURN()来实现吗?

我今天下午改了另一个程序,好像没用一样!
太难了!

2007-07-09 21:16
福尔摩斯
Rank: 5Rank: 5
等 级:贵宾
威 望:12
帖 子:4011
专家分:370
注 册:2006-8-15
收藏
得分:0 


不明白你自定义函数改变的是指针的地址?

还是指针所指向变量的值?

自我放逐。。。
2007-07-09 21:20
rocketabc
Rank: 1
等 级:新手上路
帖 子:100
专家分:0
注 册:2006-7-6
收藏
得分:0 
回复:(aaaasix)这次传的应该是地址了吧?怎么还是没...

int point(char*p)
{
*p+=3;
}

int main()
{
char b[4]={'a','b','c','d'};
char *p=b;

point(p);
printf("%c\n",*p);
}

我运行
输出 : d
是按地址传送 MAIN()调用point() ,potint()改变p地址指向 所以变成d
应该是这样


兴趣和爱好是我追求的方向
2007-07-09 21:34
rinboo
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-7-20
收藏
得分:0 
以下是引用rocketabc在2007-7-9 21:34:19的发言:

int point(char*p)
{
*p+=3;
}

int main()
{
char b[4]={'a','b','c','d'};
char *p=b;

point(p);
printf("%c\n",*p);
}

我运行
输出 : d
是按地址传送 MAIN()调用point() ,potint()改变p地址指向 所以变成d
应该是这样

函数point 是int类型,要返回值的吧?

我不知道你们用的是什么C语言,我用VC,代码是不是因该这样
#include <stdio.h>
void point(char *p)
{
*p += 3;
}

void main()
{
char b[4]={'a','b','c','d'};
char *p = b;

point (p);
printf ("%c\n", *p);
}

2007-07-21 00:01
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用rinboo在2007-7-21 0:01:44的发言:

函数point 是int类型,要返回值的吧?

我不知道你们用的是什么C语言,我用VC,代码是不是因该这样
#include <stdio.h>
void point(char *p)
{
*p += 3;
}

void main()
{
char b[4]={'a','b','c','d'};
char *p = b;

point (p);
printf ("%c\n", *p);
}

“什么C语言”是什么意思 vc只是编译器

2007-07-21 01:03
水漪儿
Rank: 2
来 自:shangshida
等 级:论坛游民
帖 子:147
专家分:10
注 册:2007-7-19
收藏
得分:0 
8楼,学到很多。谢谢。
2007-07-21 09:16
快速回复:这次传的应该是地址了吧?怎么还是没返回值呢?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017845 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved