3.指针

一 、指针存在的意义


 参考 http://www.cnblogs.com/ggjucheng/archive/2011/12/13/2286391.html
    1.指针
        指针是一个变量,该变量用于存储内存里的某个地址。指针的关键因素有四:指针的类型,指针指向的类型,指针的内容(指针所指向的内容),
     指针所占用的内存区。
        (1).指针的类型
            char* ptr;           //char*   
            int** ptr;           //int**
            int (*ptr)[3];       //int (*)[3]
            int *(*ptr)[3];      //int *(*)[3]
            把变量的名字去掉就是指针的类型
        (2).指针所指向的类型
            char* ptr;           //指向char型  
            int** ptr;           //指向int*型
            int (*ptr)[3];       //int ()[]型
            int *(*ptr)[3];      //int *()[3]
        (3).指针的内容(指针的值)
            指针的值是一个数值,该数值存放的不同于一般的整型数值,被编译器识别为一个地址。地址的长度和机器最大可寻址位数有关,32位的机器地址的长度就是
         32位。&与* ,&是取地址运算符:
            int a=10;&a的运算结果是一个地址也就是指针,是指针则会有类型,指针类型为int *,指针指向的类型为 int,指针的内容存放的是a的地址,指针所占
         的内存区是以a的首地址开始连续4字节空间。
           
        (4).指针所占的内存区
            指针所指向的内存区是以指针的值所代表的地址的开始,长度为sizeof(指针所指向的类型的)的一片内存区。
            
二、指针的用途及区别
    (1).指针和数组
        char str[3];//字符数组名str可以看作一个指针变量,指针的类型为 char*,指向的类型为char
        char *str[3];//是一个三单元的数组,但每个数组里存放的变量类型是char*型指针(可以当作字符串使用)。
     数组名有两种含义:一是代表数组本身;另外也可以表示为指针。   
    (2).函数指针和指针函数

原文地址:https://www.cnblogs.com/nyqm/p/7954664.html