为什么要用指针而不用变量名,c为何要用指针指针有何好处

1,c为何要用指针指针有何好处指针就是地址,另外还有指针变量,也就是存放地址的变量 。指针是存放内存地址的,使编程更容易实现数据的出去和计算 。平时使用的别的变量(指的指针变量以外的变量) , 就是用变量名字代表了它所在的空间,本质还是到这个地址去访问;而用指针变量访问,就是直接访问这个空间了,因此更高效 。
2,关于C语言指针在编写和程序中有什么用处为什么要使用指针这个问题太泛泛了 ,  说深了连编译技术和汇编的知识都牵扯到了,你把书上的相关内容认真读几便,不是很难,但是需要自己去理解 。先把最经典的函数传值交换的例子看懂了 。就是那个void swap(int a, int b) 和 void swap(int * a, int * b)这如何给你解释呢?这就像书为什么要有目录一样,有了每一章的目录还要在每一章里再写小标题 。我不想让你找到这一章我就改一下目录,我不想让你看到这一章的这一节我就改一下小标题 。需要改变变量就要用指向变量的指针 , 需要改变指向变量的指针就要用 指向“指向变量的指针”的指针 。如果单纯回答为什么,那我只能说因为函数需要 , 所以用了 。
3 , c的指针究竟有什么用既然变量名能直接访问变量为什么要用指针#include<stdio.h>void swap(int * a,int *b) int temp; temp=*a; *a=*b; *b=temp;}void main() int a=2,b=3; swap(a,b); printf("a=%d, b=%d",a,b);}这程序如果不用指针那么这两个数的位置就不能交换 。形参是一定得用指针接收实参的 。这只是最简单的一种用法 。简单形象的比喻是:你不在家,但你安排你信任的特好的朋友来你家休息,这时候就需要了生活中这种情况不多,但在程序设计里面,这种情况比较多 。当然还有些其它情况 。就像有些地方,每家都有一个信箱,只有你们自己和邮递员会有钥匙(就是这个指针) , 只有你们可以打开,存放东西,别人不行(没有钥匙,也就是没有这个指针) 。其他的就不说了肯定有用啊..比如你想写一个函数能让 a b两个变量的值交换 就必须要用指针..再看看别人怎么说的 。【为什么要用指针而不用变量名,c为何要用指针指针有何好处】
4,为什么要使用指针指针的好处在哪里指针使用比较灵活,如果说它的好处,根据我平时编程时的感受 , 大概有这么几点:1.在数据传递时,如果数据块较大(比如说数据缓冲区或比较大的结构) , 这时就可以使用指针传递地址而不是实际数据,即提高传输速度 , 又节省大量内存 。2.数据转换,利用指针的灵活的类型转换,可以用来做数据类型转换,比较常用于通讯缓冲区的填充,比如说,一个数据缓冲区char buf[100],如果其中buf[0,1]为命令号,buf[2,3]为类型,buf[4~7]为某一数值,类型为int,就可以使用如下语句进行赋值:*(short*)&buf[0]=cmdID;*(short*)&buf[2]=type;*(int*)&buf[4]=value;3.字符串指针,是使用最方便,且常用的 。4.函数指针 , 形如:#define PMYFUN (void*)(int,int),可以用在大量分支处理的实例当中 , 如某通讯根据不同的命令号执行不同类型的命令,则可以建立一个函数指针数组,进行散转 。5.在数据结构中,链表、树、图等大量的应用都离不开指针 。指针的好处 , 需要和数组比较起来说 。具体如下:1.指针可以随意申请不连续的数据存储空间,而数组是连续的,如果数组空间没有全部占用 , 那么会造成浪费,比如你申请了a[10],缺只有5个数据输入,那么会浪费掉5个数组空间 。如果是指针就不会浪费,用多少申请多少 。2.指针的计算更快速 。比如你需要计算一个16*16的矩阵消元,那么数据会非常的多和大,你得申请足够多的数组空间 , 弄不好还会造成溢出,为什么?因为采用数组计算时 , 是数据的交换,而不是内存地址的交换 。如果采用指针的话,不会浪费空间,不会溢出,因为指针计算时是交换指向数据存储空间的地址,而不是交换数据 。数据的大小比地址大得多 。所以采用指针好处多多,同样指针也很危险,如果用不好,还不如用数组 。得慢慢体会 。谢谢 。5,在C中为什么要使用指针你述说的这种情况就像是图书的目录和页码 你要从一本书里找内容 是一页一页翻过去快呢 还是把里面的内容按标题放在目录里快呢 这里的栈就相当于目录 指针是目录里的标题 整本书是堆 页码是堆的一个个空间 如果从堆里找需要的内容 要一遍遍判断是不是要找的内容 就是一遍一遍翻过去找 你要根据指针找到你要的内容 就是按目录表示直接翻到那一页 这么说你清楚了吧指针说白了就是和变量一样的东西 。指针就是存储了内存地址 。比如你输出个指针 。int *i = new int();std::cout<得到的是一行16进制的正整数 。而这个正整数i的内容 。而这个内容对应的是一个内存地址 。为什么用指针呢 其实就是为了避免出现大规模数据复制 。指针就是地址,另外还有指针变量 , 也就是存放地址的变量 。指针是存放内存地址的,使编程更容易实现数据的出去和计算 。平时使用的别的变量(指的指针变量以外的变量),就是用变量名字代表了它所在的空间,本质还是到这个地址去访问;而用指针变量访问,就是直接访问这个空间了 , 因此更高效 。指针也是数据类型 。其表示一个地址 。函数的参数设计尽量用指针或者引用 。因为这会“节省内存拷贝的长度”(或直接通过寄存器传递) 。另外堆和栈是没差别的 。有的数据是在函数中(栈)上定义 , 有的是采用动态从堆内存空间分配 。栈中的数据在函数退出后会变为“无效”,而堆中分配出来的则由你自己控制 。我来说下 ,  这个你可以看看汇编 之类的 或者 C 函数 调用 是怎么回事 ;首先,对于固定架构 ,  指针都是一样大的,都是指向一个内存地址所以 相对于 大数据 指针 是很小的 像 32bit 跟个 int 差不多大然后就是 讲个 简单的例子,就说 结构吧,struct aint a;int b;int c; ........int xxxxx;}像这样的一个结构,如果 我有 他的 一个指针 p我可以 通过 p->a p->b p->......来 调用 其 内部的值 ,  结构 在 内存中 其数据 有 固定的 位置 所以 通过 指针 访问 其数据 是由 p 的 偏移 量 来实现 的 这个是 编译器的 工作,编译的 时候 已经 处理好了,所以 这个 结构 不管多大 , 通过 指针 读取他 数据 的速度 都是 一样快的,所以 把 指针 放到 栈 中 能有效 节省 空间 还能 节省 传递 大参数 时 所 耗费的 时间 ,所以能更快 ,  而且 栈 空间 很小 很宝贵,不可能 把 大数据 压进去的

    推荐阅读