记录二维数组的一些不懂的且要注意的地方

数组指针(也称行指针)定义 int (*p)[n];

float w[3][2]= {1.6,2.7,3.5,7.1,81.1,9.1};
    float (*tt)[2]=w;
    for(int i=0; i<3; ++i)
    {
        for(int j=0; j<2; j++)
        {
            cout<<*tt[j]<<"****";
        }
        ++tt;
   }

本来按道理应该是逐行输出为1.6,2.7,3.5,7.1,81.1,9.1才对(忘了在++t后加换行了),然而输出的是这里写图片描述
若有大神看到本备忘录请解答一下。


So,用了另一种方法,在数组指针的基础上,打印二维数组
参考了https://blog.csdn.net/u013752202/article/details/49688717

void sz(void **tab,int rows,int cols)//二维数组的长和宽可以随意,而且同一个函数可以接收不同类型的数组
{
    for(int i=0; i<rows; i++)
    {
        for(int j=0; j<cols; j++)
        {
            cout<<*((float*)tab+i*cols+j)<<" ";
        }
        cout<<endl;
    }
}

    float w[2][3]= {1.6,2.7,3.5,7.1,81.1,9.1};
    float (*tt)[3]=w;
    sz((void**)tt,2,3);//或者 sz((void**)w,2,3)但不能直接sz(w,2,3);?   

数组形参int a[]等价int*a;在函数内一样是代表指针,因此在函数内用sizeof(a)的时候这是指针大小而不是数组大小
void test(int a[])//等同于int*a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值