美文网首页
C语言指针

C语言指针

作者: 高念吖 | 来源:发表于2017-07-24 17:44 被阅读0次

    指针也可以叫做地址,实质就是一个数字,代表内存中某一个字节编号,只不过数字过于长,都已16进制显示

    时刻记着, 指针 地址 单元标号,只能标注一个字节,也就是说指针只能指向一个字节的空间

    指针也是分类型的

    定义一个整形指针:数据类型 * 指针变量名 = 初始值

    int a= 9;

    指针

    int* p = NULL;NULL代表空地址,相当于整型中的0在此之气唯一的修饰功能,修饰变量p是个指针变量

    p = &a;

    printf("%d \n",a);

    printf("%p \n",p);//%p 用来输出地址变量

    指针指向内存的首地址

    // 变量的赋值

    //1,直接赋值

    a = 19;

    //2.间接赋值,通过访问地址

    // * 的第二个作用,取值符号,要和取地址符&区分清楚

    p = &a;

    *p = 30; // *P 等价于a

    printf("%d \n ",a);

    *(&a) == *p == 30;

    有一个指针变量,初始值为20,定义指针,并且通过指针完  成此变量重新赋值(为52)并输出

    int a = 20;

    int* p = NULL;

    p = &a;

    *p = 52;

    printf("%d ",a);

    以下是常见的奔溃格式,向空地址中存值

    int m = 0;

    int*  n= NULL;

    //或者  int *n;

    *n = 89;

    printf("%p\n",n);

    /*

    区分空间

    区分指针变量的空间和整形变量的空间:

    1.指针变量的空间存储的永远只能是地址

    2,整形变量的空间存储的是整形数值

    */

    指针变量所占的内存跟指针类型无关,跟电脑位数有关,32位--指针变量占4个字节,64位系统--指针变量占8个字节

    /*

    short  *q1 = NULL;

    printf("%lu",sizeof(q1));

    char *q2 = NULL;

    printf("%lu",sizeof(q2));

    float *q3 = NULL;

    printf("%lu",sizeof(q3));

    double *q4 = NULL;

    printf("%lu",sizeof(q4));

    long *q5 = NULL;

    printf("%lu",sizeof(q5));

    */

    指针只可以做加减运算

    注意:内存使用口诀:内存空间从高位到低位来分配,从低位到高位来存取

    指针的类型就决定了指针运算时移动的字节数,如果int型指针+1,则向高位移动四个字节,如果double型指针-�1,则向低位移动8个字节;

    int n1 = 3, m1 = 10;

    //以各种手法输出10

    int *p = NULL;

    p = &n1;

    *p = 10;

    printf("%d\n",n1);

    printf("%d\n", *(p-1));

    printf("%d\n", *(&n1-1));

    printf("%d\n",m1);

    printf("%d\n",*(&m1));

    p = &m1;

    printf("%d \n",*p);

    //指针和数组

    int array[] = {2,3,4,5,6};

    //声明整形指针

    int *point3 = NULL;

    //有没有发现,无论指针所要指向的变量所占的字节有多大,指针也只能指向内存区域的首地址

    point3 = &(array[0]);

    point3 = array;//数组名就是本数组的首地址

    point3[1] = 89;

    array[0] = 78;

    for (int  i = 0; i < 4; i++) {

    printf("%d ",point3[i]);

    }

    printf("%d",(point3 + 1));

    printf("%d",(array + 1));

    指针变量可以重指向,但是数组名只能代表本数组的首地址

    相关文章

      网友评论

          本文标题:C语言指针

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