为什么要有指针,什么时候使用指针为什么要用指针

1,什么时候使用指针为什么要用指针int * pvar; &pvar是取指针的地址 。*pvar是取指针指向的内容 。
2,c中的指针问题指针的使用带来什么意义在某些采用值传递的方式,被调函数对形参的修改不会返回到主调函数,不会修改实参的值.引用指针实现"引用传递",减少传递参数的开销,还可以直接对地址操作.实现动态存储管理.解释一下int *const 和 const int*的区别: int *const: const修饰的是int*这个指针本身,所以是指针本身的值不能变 , 但是指针指向的值可以变 const int*: const修饰的是int*指针指向的值 , 指针本身可以变 , 但指针指向的值不能变 你可以把你的函数的定义和函数的调用的地方发出来 , 这样才好分析 。
3,为什么要学习指针当你编程多了以后,会发现很多地方无法不用指针 。或者有几点可以参考:1. 指针可以实现动态的程序执行,比如根据需要分配不同的内存大?。?. 指针分配的内存不在堆栈里;而你用一个固定长度的数组是在堆栈里,往往堆栈是有限的 。而比如你需要分配几个MB的空间,似乎你不得不用指针;3. 指针可以让你的代码更加灵活 。比如你可以用指针去指向任何一个其他的变量,或者数组里任何一个地方,可以大幅提升代码的效率 。指针会了吗,干什么用的?函数指针干什么用的 , 数组和指针的区别是什么,数组名和指针的区别是什么?双重指针和数组名的关系是什么?(*a)[]和*a[]有什么区别,结构体和联合体指针学懂了没?野指针有什么危害 , 指针的指针的指针的指针的的逻辑关系能搞通吗?没学会还是要继续学习,如果学会了了得看什么方面,如果想走单片机请学习单片机,如果想学windows编程请看windows程序设计然后再看c++和mfc,如果想搞linux或者系统请继续学习c语言 。如果上述什么都不想,请去学习算法与数据结构,比如链表 , 队列,树...【为什么要有指针,什么时候使用指针为什么要用指针】
4 , 指针的作用是什么)指针的操作流程申请并初始化或配置为空:int *pInt=NULL;开辟空间或使其指向对象:pInt=new Int(3);或int i=3;pint=&i;用指针(更确切地说是操作内存,在使用之前加if(pint!=NULL)或assert(pInt!=NULL)后再使用,以防内存申请失败的情况下使用指针): if(p!=NULL) {use pint};释放使用完的内存.free(pInt);置指针为空pInt=NULL;(避免野指针的出现)(3) 在函数的参数传递中,编译器总是要为函数的每个参数制作临时副本 , 假如参数为p的话,那么编译器会产生p的副本_p,使_p=p; 假如函数体内的程式修指针的作用:1、指针就是指向一个特定内存地址的一个变量 。c语言指针可以有效地表示复杂的数据结构、动态分配内存、高效地使用数组和字符串、使得调用函数时得到多个返回值等 。指针的应用往往与数组联系在一起 , 是最频繁的,也是最基础的 。在定义数组和函数时 , 系统都会为其自动分配一个指向其首地址的指针 。对于一个数组 , 其名称就是一个指针变量 。2、指针只是一个变量,它存储一个内存地址 。如果传入一个地址,比传入一个struct效率要高,因为少了一个拷贝过程 。3、指针能够有效的表示数据结构 , 能动态分配内存,能较方便的使用字符串,有效的使用数组 。4、指针直接与数据等的储存地址有关,是比较重要的 。比如,值传递不如地址传递高效,因为值传递先从实参的地址中提出值,再赋值给形参带入函数计算;而指针则把形参的地址直接指向实参地址,使用时直接提出数据,使效率提高,特别在频繁赋值等情况下 。5,C指针问题为什么需要指针指针在你这个小程序能体现多大价值?等需要高级点的数据结构,以及高级点的算法,就需要指针了 。谭浩强这题,是体现指向函数的指针的作用,用指针保存函数的地址 , 调用这个函数,可直接通过指针调用 。在QT,GTK之类的GUI库里,它们会提供一个函数,供开发者将 自定义函数 与指定事件关联;因为 GUI库的开发者 不知道 使用者 是用什么函数,只有用个函数指针 , 保存 使用者 给的函数的地址,等事件触发后,通过该函数指针调用使用者的自定义函数 。纠结这干嘛,学程序的都知道谭浩强的书不好,他只是为了引出指针而已,指针的作用就在于指向地址 , 在后面链表啊,堆栈?。?队列啊 , 串啊都会很有用 。纠结谭浩强书的每个字句都是在自找麻烦罢了.....年轻人,虽然我没看你的代码 , 你说不用指针代码更少,不错当然节省了空间,但是你想过用指针比不用指针速度快吗? 这其中的空间和时间关系是很微妙的 。这其实都不重要,重要的是,如果想精通C,想成为C高手,我劝你 以后写程序能用指针尽量用指针,数组能被指针代替的,尽量用指针,不是仅仅掌握了if while 等结构就行了的, , 指针、结构体等才是C的精华 。比如 int *(*(*a)[5])(int *) ;你懂吗 、 二维数组 a[2][2]; a、*a、**a三者有什么区别, *a[1] (*a)[1]又有什么区别 当初我也自觉的会了if while 等结构,自信满满,,后来看了C和指针 这书后,自信被打得支离破碎,才知道自己多肤浅 。这个要涉及运算顺序,赋值运算是最低等级的int a , k=4,m=6 , *p=&k,p2=&m ;a=p==&m;指针p的内容是变量k的地址p==&m这个是判断p的内容是不等于变量m的地址所以,结果是0最后再赋值给aa=0原先给的例子并不好 。例子如下:#include int max(int a,int b) { if(a>b) return a; else return b; } int min(int a,int b) { if(a else return b; } int add(int a,int b) { return a+b; } int (*pArr[])(int, int) = {&max, &min, &add}; // 创建一个函数指针数组来存上述函数 int fun(int x,int y,int (*p)(int,int)) { return (*p)(x,y); } int main() { int a=13,b=22,n; printf("please choose 1,2 or 3\n"); scanf("%d",&n); //调用时不再需要判断n的值取调用哪个函数了,对应指针数组就可以了,方便了吧 。printf("%d",fun(a,b,pArr[n-1])); return 0; }

    推荐阅读