| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2019 人关注过本帖
标题:指针问题面面看
只看楼主 加入收藏
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-07-14 07:29
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-07-14 07:37
★红狼
Rank: 2
等 级:论坛游民
帖 子:190
专家分:17
注 册:2006-7-12
收藏
得分:0 
以下是引用lxs5216在2006-7-14 7:23:03的发言:
在C中,形参的改变与实参的确没有一点关系,所以对于函数来说通常只是利用函数名和return传递一个返回值,所以在老谭的书里就出现了“值传递(单向)”这样的字眼,而后一些书中就发挥出“双向”这样的名词,相信在C99这种标准里不会出现“双向”的,但是国人引入“双向”就是方便我等菜鸟理解的!!


双向给我的理解就是实现了形参与实参的联系,一般意义上理解的是函数调用,把,参与函数内的运算,如果是“双向的”,那就会把形参的改变传递给了实参。

如果再对双向深究,那就1000000000%会出错了。因为“双向”是国 人的名词>。wo
我对双向的理解就是这样。就是实参把值传给形参的值后。经过函数操作后。倒过来影响了实参。确实是菜鸟理解方法。

我的老师说。指针很难。实际上就是理解难。不过双向这个词我就在C99里看到。可能是书的问题。

说真的。在 int *ti ; ti=pa;pa=pb;pb=ti; 里在函数里是交换了。可是还是没双向。也就是在main里还是没交换成功。

如果换成 int ti; 那么也不会成功的。

书上没有说数组交换的。例题都是这样交换。
int a=5;b=10;
int *paa=&a,*pbb=&b; //指的是单个的数
huang(paa,pbb);
}


huang( int pa,int pb)
int ti;
ti=*pa;*pa= *pb;*pb=ti; //这些都是内容值交换,不是交换指针

如果是数组或其他的。就要象穆扬说的,

要, main()
{ huang(&paa,&pbb);
}

huang(int **pa,**pb)
int *ti;
ti=*pa;*pa=*pb;*pb=ti; //要这样

2006-07-14 12:07
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-07-14 16:08
lxs5216
Rank: 1
等 级:新手上路
帖 子:144
专家分:0
注 册:2006-2-3
收藏
得分:0 
同意穆扬的说法!!

千万注意*paa和paa的区别
2006-07-14 17:27
★红狼
Rank: 2
等 级:论坛游民
帖 子:190
专家分:17
注 册:2006-7-12
收藏
得分:0 
后面这句
huang(int **pa,**pb)
int *ti;
ti=*pa;*pa=*pb;*pb=ti;

我这样理解,*pa.是取**pa的中*pa 的地址。不是pa。是pa地址的地址 中指针(*pa)的地址 给指针ti.

对么?
2006-07-14 19:23
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-07-14 20:16
grub2linux
Rank: 1
等 级:新手上路
帖 子:335
专家分:0
注 册:2004-12-25
收藏
得分:0 

int fun(int **paa,int **pbb); file://现在交换2个数组,用指针;
{
int ti; file://有人说用 *ti,
ti=*paa;*paa=*pbb;*pbb=ti;
}

这个函数就能交换2个数组的值?!
有这么神通广大?

上面的函数仅仅交换了指针的值,两个数组里的值怎么会随之改变呢?
就好比,刻舟求剑。改变了原先记录丢剑处的记号位置,而剑还在原处未动啊!

**************************
要交换两个数组的值(不是仅仅读出值哦)必须要重新给两个数组中的元素敷值(一般要用循环)!
因为数组名是常量(重要!),是不能被重新敷值的。所以用指针只是小手段,而且
针对于楼主的这个问题来说,不用指针会更快捷简明。(用数组名加循环即可)


[此贴子已经被作者于2006-7-14 21:58:18编辑过]


有缘相识!我中文系的 3月拿下C/C++/VC 5天写游戏 2月写游戏系统 有空去http://mykool.go2.
2006-07-14 21:30
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
以下是引用★红狼在2006-7-12 22:44:35的发言:
不。指针可以 双向的。

可以双向,那是一般情况
用二级看一级才能看出那个人的想法
以后你遇见了就有体会了


嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-07-14 21:39
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
以下是引用穆扬在2006-7-12 9:36:35的发言:
“指针是一个特殊的变量”

这句话是错误的。
应该说
“指针是一个特殊的类型”

指针确实是一个特殊变量,而且unsignedint型(是这么写吧,哈哈,喝大了)

[此贴子已经被作者于2006-7-14 21:44:34编辑过]


嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-07-14 21:41
快速回复:指针问题面面看
数据加载中...
 
   



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

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