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

1 , 什么时候使用指针为什么要用指针int * pvar; &pvar是取指针的地址 。*pvar是取指针指向的内容 。
2,请问c在什么情况下 是使用指针的这个问题问的怪 。可以不用你就不用?。置挥腥现ひ欢ㄈ媚阌?。不会用指针你先就别用指针 。写到应该用的程序的时候你不用指针是实现不了的了 。到时候你就知道指针为什么有用了 。关于smart pointer的用法你可以找一本书看看,里面有一个章节的内容都是介绍只能指针的 。书名《effective c++》【什么时候要用指针调用,什么时候使用指针为什么要用指针】
3,什么情况下是必须使用指针的请举一两个例子在使用指针可以简化问题或者让函数接口的偶合性更低的时候可以考虑使用指针,没有必须使用指针的情况,用指针的情况都可以不用指针来解决.做链表要用到指针 。在C语言中,函数参数传递方式为传值,如果想在函数中改变所传参数的值,就要用到指针 。比如交换两个变量值的函数,如果写成下面这样,就什么效果都没有 。void swap(int a, int b)int t;t = a;a = b;b = t;}应该写成这样:void swap(int *a, int *b)int t;t = *a;*a = *b;*b = t;}C++有引用传值,也可以达到同样效果 。你是要动态数组 还是用访问数组的地址来排序
4,什么情况下需要声明和使用指针变量没有指针变量;函数调用时byval为值传递 , byref为地址传递,VB默认采用地址传递 , 完全不用到指针的概念,这也是VB简单的地方的体现其中第二行等同于int *ptr;ptr=value;还是int *ptr;*ptr=value;这个说错了哪个都不等于,真正等于的是int *ptr;ptr = &value;你说的第一个是错的,因为value是int类型,ptr是一个int指针,类型不同用赋值符号就毫无意义了 。第二个你给ptr赋值,但是这和把value的地址给ptr的意义有天壤之别,首先ptr现在没有指向任何东西 , 这样的代码会导致错误 。其次就算ptr指向了某个东西这段代码能成功,但是这也表示value赋值给ptr指向的内存而已 , 你的原程序假设在对ptr进行修改是可以修改value的值的,因为value的地址给了ptr,而你下面提问的第二个是达不到这个效果的 。5,C语言什么时候用指针1.什么时候都可以用指针 , 因为用指针的效率比用变量高 。2.当一个函数要返回1个以上的运算结果时,就必须用指针 , 因为一个函数只能返回一个值,更多的得用指针“带回” 。3.操作数组时,用指针不仅方便得多而且代码时效很高 。4.操作文件时,不用指针寸步难行 。5.利用指针可以简化函数调用的书写过程,使源代码易于阅读 。……不一而论 。建议你不应该纠结于什么时候用指针 。而应该致力于深入理解、学习: 指针的本质是什么建议你先看程序,边理解边学调用函数传数组值的时候,数组太长的话....你懂的,括号里,写死你a[0],a[1],a[2]....孩子慢慢传吧你还不如传数组起始的指针 , 就是告诉函数“在某个位置有一堆东东!”,而不是一个一个告诉他 。就好像把指针当做门牌号码 。房子大小不定 , 房子里住的人多少不定,但是门牌号码长度一定 。PS:告诉人家门牌号码很容易引狼入室...也就是...指针玩脱了,内存溢出的

    推荐阅读