指针的类型

C语言中的指针类型用于告诉指针,其所指向的地址存放什么数据类型,而指针本身占用8个字节(64位编译器)的大小跟类型无关。
但对指针进行输入、输出操作时,指针的类型却至关重要。
例如输出时,如果指针定义为char类型,则指针会从所指向的地址至内存高位寻找1Byte(64位编译器)的内容输出。
如果定义为int类型,则会从所指向的地址至内存高位寻找4Byte(64位编译器)。

int main()
{
    /*
     假设变量在内存中的地址如下

        变量  (内存地址)
         a ---> ff3
         b ---> ff2
         c ---> ff1
         d ---> ff0

     内存中的位置如下
                             低位
     p4 --> &d --> ff0 --> 0110 0100 (100)
     p3 --> &c --> ff1 --> 0110 0011 (99)
     p2 --> &b --> ff2 --> 0110 0010 (98)
     p1 --> &a --> ff3 --> 0110 0001 (97)
                             高位

     因为p为int类型 所以输出*p时会输出4个字节

     p1 --> &a --> ff3 --> 0000 0000 0000 0000 0000 0000 0110 0001 
     (97)

     p2 --> &b --> ff2 --> 0000 0000 0000 0000 0110 0001 0110 0010 
     (24930)

     p3 --> &c --> ff1 --> 0000 0000 0110 0001 0110 0010 0110 0011 
     (6382179)

     p4 --> &d --> ff0 --> 0110 0001 0110 0010 0110 0011 0110 0100 
     (1633837924)

     */
    char a='a';
    char b='b';
    char c='c';
    char d='d';

    int *p1=&a;
    int *p2=&b;
    int *p3=&c;
    int *p4=&d;

    printf("&a=%p, &b=%p \n&c=%p, &d=%p \n",&a,&b,&c,&d);
    printf("*p1=%d, *p2=%d, *p3=%d, *p4=%d\n",*p1,*p2,*p3,*p4);
    return 0;
}

输出结果

&a=0x7fff5a461c23, &b=0x7fff5a461c22 
&c=0x7fff5a461c21, &d=0x7fff5a461c20 
*p1=97, *p2=24930, *p3=6382179, *p4=1633837924
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值