| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1258 人关注过本帖
标题:关于一个函数功能的问题
只看楼主 加入收藏
g79134682
Rank: 2
等 级:论坛游民
帖 子:80
专家分:75
注 册:2011-7-29
收藏
得分:0 
各位大侠好。我是个菜鸟。。我就是想问个问题。。。("%d,%%d这个是啥意思?好多地方都出现这个百分号。。到底是啥呢。。
2011-08-04 22:06
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 11楼 g79134682
很有水平的问题,不过我忽悠着回答你吧,反正你自称菜鸟:那个百分号的意思,就是要在这个位置用一个整数数字替换了它,比如printf("abcdef%d\n",i)这个调用,printf()函数会将后面变量i的值(比如i=12)替换了%d这两个字符,变成"abcdef12\n"这样的字符串,输出到屏幕上。

授人以渔,不授人以鱼。
2011-08-04 22:12
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
嗯~题目改过了~
2011-08-04 22:51
韩54521风
Rank: 4
等 级:业余侠客
帖 子:75
专家分:212
注 册:2011-6-11
收藏
得分:0 
回复 8楼 loveshuang
指针的拷贝副本是什么东西啊?百度也没弄明白啥意思,好想很深奥的样子啊!情赐教
2011-08-05 13:27
icysky
Rank: 5Rank: 5
来 自:心灵世界
等 级:职业侠客
威 望:1
帖 子:172
专家分:399
注 册:2011-5-17
收藏
得分:10 
指针作为参数

函数参数传递是值传递,头指针作为参数时,实际上是生成了一个指针的副本,
函数中是对副本进行操作,没有改变原指针的值,所以指针仍保持进入函数前的值。

不管怎么走、总有一个终点...
2011-08-05 16:18
icysky
Rank: 5Rank: 5
来 自:心灵世界
等 级:职业侠客
威 望:1
帖 子:172
专家分:399
注 册:2011-5-17
收藏
得分:10 
指针做参数只能改变指针指向的内容  不能改变指针的地址

楼主比较下 下面两个


你的代码
程序代码:
void fun(int *a,int *b)
{ int *c;
c=a;a=b;b=c;
}




第2个代码

程序代码:
void fun(int *a,int *b)
{ int c;
c=*a;*a=*b;*b=c;
}




还有 你中间怎么用%%d   是不是多打了个%号

[ 本帖最后由 icysky 于 2011-8-5 16:31 编辑 ]

不管怎么走、总有一个终点...
2011-08-05 16:23
韩54521风
Rank: 4
等 级:业余侠客
帖 子:75
专家分:212
注 册:2011-6-11
收藏
得分:0 
回复 16楼 icysky
这两个程序区别倒是很明显,这一块的知识是什么啊,我怎么找不到呢,到现在还是没有搞懂,希望可以告诉我这两个程序运行的区别
2011-08-05 21:00
linxing_spp
Rank: 2
等 级:论坛游民
帖 子:5
专家分:14
注 册:2011-8-5
收藏
得分:10 
楼上分析的很对,不过有一点大家可能还不明白,为什么明明已经在fun()函数中做了交换,但是输出结果还是B选项。解释一下:有这样的输出是因为传进去的实参放在栈上,相当于p和q 都有了一个幅本,此时对幅本做交换是不会改本main函数中的p和q的值的。至少什么时候会改变到*a 和* b所指向的值,那可以写成
void fun(int *a,int *b)
{ int c;
c=*a;*a=*b;*b=*c;
}
这样就可以改变main()中的x,y 的值了。
这个问题如果还不明白,你就多看看传值和传址的问题,还有栈和函数。会有帮助的。
2011-08-05 21:45
韩54521风
Rank: 4
等 级:业余侠客
帖 子:75
专家分:212
注 册:2011-6-11
收藏
得分:0 
回复 18楼 linxing_spp
经典,谢谢
2011-08-06 08:32
风生钧起
Rank: 4
来 自:江西
等 级:业余侠客
帖 子:383
专家分:246
注 册:2011-7-26
收藏
得分:0 

x,y的地址已经在栈某个地方分配好  在mian()不可以再对其进行地址操作 我目前学的唯一方法是用指针对其操作

fun(,&x,&y)分别被指针变量a,b;所指
即*a = x,*b = y; 这样 就可以对x, y;操作了     a, b是int *类型 则*a,*b;是int 类型
题目互换的 是*a,*b;的值 所以int *c 改成 int c;

墨一世红颜倾醉己    霁天谁与话风流

修仙``````````````````````````````````````````````
2011-08-06 09:04
快速回复:关于一个函数功能的问题
数据加载中...
 
   



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

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