又话指针

先来看一下例子:

#include<cstdio>
int main(){
    int * p;
    int * q;
    int a[5];//一个int类型是4个字节,一个字节是8位
    //一个字节是一个地址,即一个int类型的变量是占4个地址
    a[0] = 4;
    a[1] = 5;
    p = a;//把数组首地址传给指针变量p
    q = a+1;//把数组中第二个数的地址传给指针变量q
    printf("数组第一个数的地址是:%p\n",p);
    printf("数组第二个数的地址是:%p",q);




return 0;
}

上面例子的输出是:



通过分析上面的例子,需要记住的有三点:

①一个字节是一个地址
②一个字节是8位
③一个指针变量存放的只是变量的首地址


同时需要注意的是:所有的指针变量都只占4个字节!!!


大家如果不信的话可以通过下面的程序来验证一下:

#include<cstdio>
int main(){
    double * p[3];
    double i[3] ={4,1,0};
    double ** m;//m存储的是指针变量p[0]的地址
    double ** n;//n存储的是指针变量p[1]的地址
    p[0] = &i[0];
    p[1] = &i[1];
    m = &p[0];
    n = &p[1];
    printf("%p\n",m);
    printf("%p\n",n);
return 0;
}

输出结果为








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值