指针

指针就是地址的意思

指针变量存放的是地址

普通变量存放的是数据

#include <stdio.h>


int main()
{
    char a='F';
    int f=123;

    char *pa=&a;
    int *pb=&f;

    printf("a=%c\n",*pa);
    printf("f=%d\n",*pb);
    return 0;
}

结果

a=F
f=123

可以用*pa间接访问,还可以改名

#include <stdio.h>


int main()
{
    char a='F';
    int f=123;

    char *pa=&a;
    int *pb=&f;

    printf("a=%c\n",*pa);
    printf("f=%d\n",*pb);
    *pa='C';
    *pb+=1;
    printf("now,a=%c\n",*pa);
    printf("now,f=%d\n",*pb);
    return 0;
}

结果

a=F
f=123
now,a=C
now,f=124

指针的尺寸是四个字节,用四个字节存放一个地址,在其他系统不一定

#include <stdio.h>


int main()
{
    char a='F';
    int f=123;

    char *pa=&a;
    int *pb=&f;


    printf("sizeof= %d\n",sizeof(pa));
    printf("sizeof= %d\n",sizeof(pb));
    return 0;
}

结果

sizeof= 8
sizeof= 8

我的系统是Windows64位,所以是8

指针存放的地址字节跟他们指向的数据类型没关系

如果不写*,打印出来的是指针的地址

#include <stdio.h>


int main()
{
    char a='F';
    int f=123;

    char *pa=&a;
    int *pb=&f;

    printf("the addr of a is:%p\n",pa);
    printf("the addr of b is:%p\n",pb);
    return 0;
}

结果

the addr of a is:000000000061FE0F
the addr of b is:000000000061FE08

 

避免访问未初始化的指针!!!!!!!!!

posted @ 2021-08-22 11:25  好想成为一只鸟  阅读(40)  评论(0)    收藏  举报