| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 19487 人关注过本帖, 3 人收藏
标题:指针用途大吗,有什么用
只看楼主 加入收藏
qq312154421
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:124
专家分:120
注 册:2010-6-7
收藏
得分:1 
看来指针已经伴随我了

勤奋不止,自强不息。
2011-02-20 19:33
lyj23
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:168
专家分:140
注 册:2010-10-31
收藏
得分:1 
C++里有变量的别名,函数传递可以代替指针。指针是指向一段内存的,指针可以创建链表,开创内存单元,C++里的new int;new float;还是指针类型!指针说起来比较烦,但不可以不学……你前面说数组什么的,就*p这种形式,那你理解就有问题了!*p,p,&a。等等比如数组int code[],code又是什么?不学指针你才会问出这种外行的问题!难道只有‘*’指针运算符的才叫指针?

[ 本帖最后由 lyj23 于 2011-2-20 19:55 编辑 ]
2011-02-20 19:50
犬虫门心
Rank: 8Rank: 8
来 自:西安
等 级:蝙蝠侠
帖 子:209
专家分:753
注 册:2011-1-25
收藏
得分:0 
以下是引用a563622106在2011-2-20 14:14:44的发言:

数组这些我都会用,上面的那个程序的a,b,我可以用数组a【2】来代替,这样就可以返回给主函数,
其实我说的指针式指  *p这种形式的
楼主,你的概念里有三个主要的问题:
1、C语言中的子函数,不是只能被一个函数调用的。一个子函数一旦写成,那就应该可以在任何可以调用它的地方调用。也就是说,Exchange()函数,不单单可以被main()函数调用,其实也可以被其它的,希望实现交换数据功能的函数所调用。简单的例子:排序(假设对数组int ar[10]。在实现排序的时候,我们要进行很多次调用,要交换的可能是ar[i]、ar[j],这里的i,j是可变的。如果你用a[2]来替代了,那么只能对a[2]的两个元素交换,而对任何其它数组,你的函数就无能为力了。再考虑库函数,众多的库函数,我们可以在任何C文件中,按照自己的要求来调用,决不会局限于某一种特定的情况(就是你所说的a[2])!而这才是函数存在的意义(用术语说,这叫软件的复用度,也是《软件工程》这门课所追求的目标之一,其主要目的是,强调代码可重复实用,以降低软件开发成本)。

2、就算Exchange()中,你用int a[2]作为形式参数,例如:
void Exchange(int a[2])
{
    ...
}
相信你应该懂得形参与实参应保证类型的一致性,那么请你回去实践我下面的程序段:
#include<stdio.h>

void Exchange(int a[10]) //函数的作用在这里是次要的,主要要讨论形参和实参的问题
{
    printf("在Exchange中,a 占用%dB\n", sizeof(a));
    //这个输出结果应该是4B,如果你用TC,那么就是2B了,但绝对不会是40B!这其实就是说明,形式参数都是变量,根本不可能是数组!而这个例子中,a的本质就是int *a!形式为二维数组的形参也是一样的!请上机验证!
}

int main(void)
{
    int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

    printf("在main()中,a 占用%dB\n", sizeof(a));
//这个输出结果应该是40B,说明main()中的a才是真正的数组!
    Exchange(a);
}

3、问楼主一个尴尬的问题:你现在所编写的程序,在一个C文件中,有超过200、300行以上的么?
我大胆地猜测,应该没有。而这就是第三个问题。楼主,你现在所编写的程序,仅仅是练习,根本谈不上实用。也因为如此,你所面对的问题(题目,或者干脆些说,就是考试题目)都是复杂度很低的,很多实用功能的程序所涉及的困难都没有出现。再加上你的那位“老师”(我之所以打引号,你应该明白是什么意思!)的“诱导”,才让你误入歧途。
真正有实用性的程序,其所实现的功能必然不可能简单,那么指针在那里,必然是不可或缺的有力武器!

最后要说,指针存在的理由我已经在我的回帖中讲明白了,而作为“软件”专业的你,千万不要再继续错下去了!

[ 本帖最后由 犬虫门心 于 2011-2-20 21:13 编辑 ]

当一名对得起学生学费的老师,一直是我的目标!我会更努力的!
2011-02-20 21:07
xzmoji
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-11-7
收藏
得分:0 
4楼必须顶,说的太好了!
2012-11-07 09:53
z00z
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2015-11-7
收藏
得分:0 
回复 4楼 犬虫门心
直接定义个全局变量不就行了吗?为什么要用指针?我写过很多C语言项目,自己很少用到指针,除非源代码的函数是有指针。
2015-11-07 22:28
快速回复:指针用途大吗,有什么用
数据加载中...
 
   



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

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