黑马程序员技术交流社区

标题: c语言指针总结 [打印本页]

作者: YangperlovE    时间: 2015-10-12 22:33
标题: c语言指针总结

    //指针数组---数组每个元素都是指针,共同构成一个数组
    1.  一个指针变量p 指向数组中的一个元素  p+1 相当于 指向该元素的下一个元素. p-1 相当于 指向该元素的上一个元素
   
    2.  printf(" %ld  ",p2>p1);表示的含义是 两个指针 指向元素 在数组中 是高位还是地位
   
    3.  p2 - p1 相当于 其指向元素之间下标的差 .  也就是相当于 这两个指针指向的元素之间相差几个元素 .
   
    4.  char *p2 ="dadasdasdasd";定义了一个字符串指针 保存的是 "dadasdasdasd" 的  首地址
   
    5.  通过指针变量在内存中保存字符串 不能再通过指针去修改对应字符串的值  因为 字符串放在只读区.(字符串数组可以修改)
   
    6.  单独定一个指针变量 不能直接接受从键盘输入的字符串
   
    7.  int * names[5] = {&a,&b,&c,&d,&e};
        定义了 一个  一维的 指针数组  数组名 names 长度 5  数组的第一个元素存的是 变量a的地址
        **names-->a的值,通过数组名 来获取对应元素中的数据 -- (这个数据是地址  ) 再通过这个数据 访问对应内存单元中的数据
   
    8.  (*--->从地址找到内存空间存储的数据    &--->找到到内存空间数据的地址)   * 和 & 是相反的两个操作
   
    9.  数组 Books中存放的是 这些字符串的 首地址  char * books[5] = {"feme","boook2","boooooook3","bok4","bk5"};
   
    10. const int *p;将指针变量p1 用const关键修饰 不能通过指针变量修改其指向变量的值 ,但是可以改变指针指向(即指向的数据)
        int * const p; p可以改变值,不能改变指向.         const int * const p; 指向和值都不能改变
   
    11. calloc 在(堆区)中分配一片连续的内存空间  如果在堆区中找到这么连续的一片内存空间 则返回 这边内存空间的首地址 否则返回NULL...想在堆区中开辟一片连续内存空间  用来存放 50个整数    int *p =  (int *)  calloc(50, sizeof(int));
    //函数指针   函数也是有地址的 这个地址存放在函数名字里面 . 用一个 指针 把函数的地址存起来   这种指针就叫做 函数指针
               //数组指针同理
   
    //定义函数指针
      1.拷贝 对应函数 { 前面的东西  --函数头部
      2.放在指定的位置
      3.修改函数的名字   --- > (*变量名 )
         
         
    12. 结构体变量指针 作为函数的实际参数  地址传递


















}









作者: jy00889669    时间: 2015-10-12 22:43
指针难吗?
作者: hulk374    时间: 2015-10-12 23:20
收藏下,还没看到呢
作者: YangperlovE    时间: 2015-10-12 23:27
jy00889669 发表于 2015-10-12 22:43
指针难吗?

指针是c语言的灵魂,也是c语言比别的语言厉害的地方,这个东西很深,看你想学到什么程度




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