黑马程序员技术交流社区

标题: 分享自己总结的指针的一些使用 [打印本页]

作者: hui1107464497    时间: 2015-5-27 14:04
标题: 分享自己总结的指针的一些使用
1.指针的定义: 数据类型 *指针变量名

2.指针的赋值:指针变量名=&... 或者 指针变量名 =数组名

注意:定义的时候 * 仅代表这是在定义一个指针变量,没有其他的意义

eg.

  1. int main()
  2. {
  3.     int *p;//定义指针变量
  4.     int a=10;
  5.     p=&a;//给指针变量赋值,给的是变量a的地址符
  6.     printf("%d",*p);//获取指针变量的值  
  7.               
  8. }
复制代码

3.指针操作数组时,因为数组是属于引用类型的,所以将数组名直接赋值给指针,就相当于把数组的地址给了指针

eg .

  1. int main()
  2. {
  3.    
  4.     char *p;//定义指针变量
  5.     char arr[]={'a','b','c','\0'};
  6.     p=arr;//给指针变量赋值 也可以 p =arr[0]
  7.    
  8.     //利用指针访问数组
  9.    
  10.     printf("%c",*(p+1)); //代表获取数组从0+1位置点元素
  11.     printf("%c",*p); //访问的是数组的第0个元素
  12.    
  13.     return 0;
  14. }
复制代码

4.指针指向函数

  定义要指向函数的指针: 函数的返回值 (*指针变量名)(参数类型,...)

  给指针变量赋值:指针变量名=函数名称

  调用指针(相当于调用函数):指针变量名(参数值,...)或者(*指针变量名)(参数值,...)

  作用:这个指针就是用来间接调用函数的

eg.

  1. #include <stdio.h>

  2. //声明函数
  3. int test(int,int);

  4. int main()
  5. {
  6.    //定义指向函数的指针
  7.     int (*p)(int,int);
  8.     //给指针赋值
  9.     p=test;
  10.     //利用指针调用函数,并接受返回值
  11.     int sum=  p(1,2);
  12.     int sum2= (*p)(10,20);
  13.     //输出
  14.     printf("sum=%d,sum2=%d",sum,sum2);
  15.    
  16.     return 0;
  17. }
  18. //定义函数
  19. int test(int a,int b)
  20. {
  21.     return a+b;
  22. }
复制代码

5.返回指针的函数

  定义函数:返回值类型 *函数名(){}

  1. #include <stdio.h>

  2. //声明函数
  3. char *test();

  4. int main()
  5. {
  6.     //调用指针函数
  7.     char *result=test();
  8.     //输出
  9.     printf("%s",result);
  10.     return 0;
  11. }
  12. //定义函数
  13. char *test()
  14. {
  15.     return "abc";
  16. }
复制代码

6.指向指针的指针

  定义:数据类型 **指针变量名

  赋值:指针变量名=&变量

  1. int main()
  2. {
  3.    
  4.     int  a=10;
  5.     //定义指针,指向a
  6.     int *p=&a;
  7.     //定义指向指针的指针
  8.     int **p2;
  9.     //给p2赋值
  10.     p2=&p;
  11.    
  12.     //利用指针指向a改变a的值
  13.     *p=20;
  14.     printf("p改变:a=%d\n",a);
  15.     //利用指向指针的指针改变a的值
  16.     *(*p2)=30; //*p2  就代表指向指针p ,然后再加上 * 就相当于利用指针p去访问a
  17.     printf("p2改变:a=%d",a);
  18.     return 0;
  19. }
复制代码

作者: sdzwb89    时间: 2015-5-27 14:16
好高大上的感觉~
作者: 13673696542    时间: 2015-5-27 20:10
写的很全面。
作者: 小龙女的萝卜    时间: 2015-5-27 20:27
指向指针的指针,感觉指的多了就好迷
作者: woaidd99    时间: 2015-5-27 21:22
还没学到  可以看看
作者: 碧空海    时间: 2015-5-27 21:26
学习了,,,,,,,,,,,,,,,,,
作者: doushu    时间: 2015-5-27 21:43
顶顶顶..........
作者: huanleabcd    时间: 2015-5-28 07:33
学习下,共同努力吧~~~
作者: Asskicker    时间: 2015-5-28 09:07
巾帼不让须眉啊,妹子总结的很到位,让我一个汉子都佩服的五体投地。
作者: zhangyq    时间: 2015-5-28 22:28
不错!学习一下!!!!!!!
作者: 小路8866    时间: 2015-5-29 08:53
不错不错,学习了

作者: 蜡笔小炎    时间: 2015-5-29 11:47
已收藏     
作者: 这是829    时间: 2015-5-29 23:43
围观学习啦!
作者: 七尺阳光    时间: 2015-5-29 23:54
关于指针非常好的总结,学习了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2