C++:指针数组理解

#include <iostream>
using namespace std;
int main(int argc, char** argv) {
    float h_ranges[] = { 100.5, 200.5 };
    float s_ranges[] = { 300.5, 400.5 };
    const float* ranges[] = { h_ranges, s_ranges };
    //是一个二维数组
    cout<<"指针数组如下:\n\nfloat h_ranges[] = { 100.5, 200.5 };\nfloat s_ranges[] = { 300.5, 400.5 };\nconst float* ranges[] = { h_ranges, s_ranges }; "<<endl;
    cout << "\n输出如下:\n" << endl;
    cout << "打印的表达式\t表达式的输出值\n" << endl;
    cout << "===================================" << endl;
    cout << "ranges[0][0]\t" << ranges[0][0] << "\t" << &(ranges[0][0]) << endl;
    cout << "ranges[0][1]\t" << ranges[0][1] << "\t" << &(ranges[0][1]) << endl;
    cout << "ranges[1][0]\t" << ranges[1][0] << "\t" << &(ranges[1][0]) << endl;
    cout << "ranges[1][1]\t" << ranges[1][1] << "\t" << &(ranges[1][1]) << endl;
    cout << "===================================" << endl;

    cout << "ranges[0]\t" << ranges[0] << endl;
    cout << "ranges[1]\t" << ranges[1] << endl;
    cout << "*(ranges[0])\t" << *(ranges[0]) << endl;
    cout << "*(ranges[1])\t" << *(ranges[1]) << endl;
    cout << "*(ranges[0])+1\t" << *(ranges[0]) + 1 << endl;
    cout << "*(ranges[1])+1\t" << *(ranges[1]) + 1 << endl;
    cout << "*(ranges[0]+1)\t" << *(ranges[0] + 1) << endl;
    cout << "*(ranges[1]+1)\t" << *(ranges[1] + 1) << endl;
    cout << "===================================" << endl;

    cout << "ranges\t\t" << ranges << endl;
    cout << "*(ranges)\t" << *(ranges) << endl;
    cout << "*(*(ranges))\t" << *(*(ranges)) << endl;
    cout << "ranges+1\t" << ranges + 1 << endl;
    cout << "*(ranges+1)\t" << *(ranges + 1) << endl;
    cout << "&ranges\t\t" << &ranges << endl;
    cout << "&ranges+1\t" << &ranges+1 << endl;
    cout << "===================================" << endl;
    cout << "sizeof(h_ranges)\t" << sizeof(h_ranges) << endl;
    cout << "sizeof(s_ranges)\t" << sizeof(s_ranges) << endl;
    cout << "sizeof(h_ranges[0])\t" << sizeof(h_ranges[0]) << endl;
    cout << "sizeof(h_ranges[1])\t" << sizeof(h_ranges[1]) << endl;
    cout << "sizeof(ranges)\t\t" << sizeof(ranges) << endl;
    cout << "sizeof(&ranges)\t\t" << sizeof(&ranges) << endl;
    cout << "sizeof(ranges[0])\t" << sizeof(ranges[0]) << endl;
}

 输出:

指针数组如下:

float h_ranges[] = { 100.5, 200.5 };
float s_ranges[] = { 300.5, 400.5 };
const float* ranges[] = { h_ranges, s_ranges };

输出如下:

打印的表达式    表达式的输出值

===================================
ranges[0][0]    100.5   000000384937F818
ranges[0][1]    200.5   000000384937F81C
ranges[1][0]    300.5   000000384937F838
ranges[1][1]    400.5   000000384937F83C
===================================
ranges[0]       000000384937F818
ranges[1]       000000384937F838
*(ranges[0])    100.5
*(ranges[1])    300.5
*(ranges[0])+1  101.5
*(ranges[1])+1  301.5
*(ranges[0]+1)  200.5
*(ranges[1]+1)  400.5
===================================
ranges          000000384937F858
*(ranges)       000000384937F818
*(*(ranges))    100.5
ranges+1        000000384937F860
*(ranges+1)     000000384937F838
&ranges         000000384937F858
&ranges+1       000000384937F868
===================================
sizeof(h_ranges)        8
sizeof(s_ranges)        8
sizeof(h_ranges[0])     4
sizeof(h_ranges[1])     4
sizeof(ranges)          16
sizeof(&ranges)         8
sizeof(ranges[0])       8
请按任意键继续. . .

 琢磨吧

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值