美文网首页编程
1.总结指针

1.总结指针

作者: 记事本的记事本 | 来源:发表于2019-12-09 00:25 被阅读0次

    1.内存四区:
      堆区:系统自动开辟,自动释放
      堆区:程序员主动开辟主动释放
      全局区:全局静态变量
      代码区:保存代码
      2.地址
      地址的具体含义为,例如小明住在21栋5楼东户那么小明,这个地址为一个地址,而这个地址 里东西为值地址有以下特性,唯一,地址也是一种数据。
      首地址:为一个存储序列的第一个地址
      3.指针变量:

    #include <stdio.h>
      main()
      {
      int a = 111;
      int *p =&a;
      printf("a的值%d\n",a);
      printf("a的地址的值%d\n",&a);
      printf("指针变量pa的值%d\n",p);
      printf("pa指向的值%d\n",*p);
      }
    

    作用:存储地址。
      定义一个指针: int p=NULL; //其中q是一个变量,不要把p看做一个整体;其实p就是一个int* 的变量,可以这样看 数据类型变量名,星号只能说明这里是一个指针变量。
      野指针:定义一个指针没有指向任何的地址,在指针进行初始化时一定要赋值。
      4.指针的引用:
      指针变量自己的值:p;
      指针变量指向的值:
    pa
      5.空指针:不确定类型的指针 void *
       malloc(4)//开辟四个字节那么这个四个字节存放什么的?可以使 int unsigned int floa t型
      void可与强制转换为其他任意的类型
       (int*)malloc(4)
      (float*)malloc(4)
      (char(*)[4]) malloc(4)
       如果给一个房子需要放东西,那么怎么把东西放到进去,按四个字节 还是一个字节放,申请四个字节不一定是把这个内存占满,大的可以装小的小的不可以装大的
      6.指针的运算
       指针的运算其实就是地址的偏移,两个地址之间的运算是没有任何意义的
    就有这些运算 ++ -- + - 这几种格式

    #include <stdio.h>
    main()
    {
    
        char a ;
        char *pa = &a;
        int b;
        int *pb=&b;
        int c[10];
        int(*pc)[10] = &c;
    
        printf("pa=%d\tpa+1=%d\n",pa,pa+1);
        printf("pb=%d\tpb+1=%d\n",pb,pb+1);
        printf("pc=%d\tpc+1=%d\n",pc,pc+1);
    
    }
    
    
    pa=1637199      pa+1=1637200
    pb=1637172      pb+1=1637176
    pc=1637112      pc+1=1637152
    请按任意键继续. . .
    
    

    7.一维数组与指针
    &a是指向整个数组的指针
    a是数组名:[数组名是这个数组的首地址]
    int p1=a;
    int(
    pa)[5] = &a;//数组指针

    a指向数组的第一个存储单元 a[0]

    访问数组元素
    数组名:
    *(a+m) //a[m]

    8.二维数组与指针
    arr[m][n] = (*(arr+m)+n)

    相关文章

      网友评论

        本文标题:1.总结指针

        本文链接:https://www.haomeiwen.com/subject/tlivgctx.html